_beginThreadex的用法
http://blog.csdn.net/cjcy1984001/article/details/6675669
线程开始和停止函数!
unsigned long _beginthreadex( void *security, unsigned stack_size,
unsigned ( __stdcall *start_address )( void * ),
void *arglist, unsigned initflag, unsigned *thrdaddr );
第一个参数是线程的安全属性,如果为NULL则为默认安全属性
第二个参数是用来指定线程堆栈的大小,如果为0,则线程堆栈大小和
创建他的线程的相同。一般用0
第三个参数指定线程函数,也就是线程调用执行的函数地址
第四个参数为传递给线程的参数列表 如果多于一个的话,使用结构,然
然后传给结构的指针
最后一个是线程的标识ID
void _endthreadex(unsigned status);
停止线程返回status中指定的代码
例子:
struct agrclist{
char *data;
int count;
};
unsigned __stdcall DoTest(void *mArgclist){
agrclist *pagrclist;
pagrclist=(struct agrclist *)mArgclist;
cout << pagrclist->data;
cout << pagrclist->count;
_endthreadex(0);
return 0;
}
void main(void){
char buf[128];
HANDLE hThread;
unsigned int threadid;
agrclist magrclist,*pmagrclist;
pmagrclist=&magrclist;
pmagrclist->data=buf;
pmagrclist->count=1;
hThread=(HANDLE)_beginthreadex(NULL,0,&DoTest,pmagrclist,NULL,&threadid);
closeHandle(hThread);
http://blog.csdn.net/kailan818/article/details/5907908
小光和Kimi建议创建线程应该用_beginThreadex,ripple里面就是用的这个。
花了老半天才把createThread改成_beginThreadex,例子如下:
//sipvoiplink.h
class SIPVoIPLink
{
private:
static unsigned __stdcall ReceivingThrd(void * pParam);
}
//sipvoiplink.cpp
#include <Winsock2.h>
#include <process.h>
bool SIPVoIPLink::init()
{
......
HANDLE hThread;
unsigned threadID;
hThread = (HANDLE)_beginthreadex( NULL, 0, &SIPVoIPLink::ReceivingThrd, (LPVOID)this, 0, &threadID );
if(hThread == NULL)
return false;
}
unsigned __stdcall SIPVoIPLink::ReceivingThrd(void * pParam)
{
//getEvent();
((SIPVoIPLink *)pParam)->getEvent();
return 0;
}
unsigned long _beginthreadex( void *security, unsigned stack_size, unsigned ( __stdcall *start_address )( void * ), void *arglist, unsignedinitflag, unsigned *thrdaddr );
//第1个参数:安全属性,NULL为默认安全属性
//第2个参数:指定线程堆栈的大小。如果为0,则线程堆栈大小和创建它的线程的相同。一般用0
//第3个参数:指定线程函数的地址,也就是线程调用执行的函数地址(用函数名称即可,函数名称就表示地址)
//第4个参数:传递给线程的参数的指针,可以通过传入对象的指针,在线程函数中再转化为对应类的指针
//第5个参数:线程初始状态,0:立即运行;CREATE_SUSPEND:suspended(悬挂)
//第6个参数:用于记录线程ID的地址
一个线程的好例子:http://www.cppblog.com/mzty/archive/2007/07/25/28756.html
// In C++ you must employ a free (C) function or a static
// class member function as the thread entry-point-function.
// Furthermore, _beginthreadex() demands that the thread
// entry function signature take a single (void*) and returned
// an unsigned.
_beginThreadex的用法的更多相关文章
- 【C++】线程_beginthreadex参数说明
unsigned long _beginthreadex( void * _Security, //第1个参数:安全属性,NULL为默认安全属性 unsigned _StackSize, //第2个参 ...
- WINDOWS-API:关于线程CreateThread,_beginthead(_beginthreadex),AfxBeginThread
[转]windows多线程编程CreateThread,_beginthead(_beginthreadex)和AfxBeginThread的区别 在Windows的多线程编程中,创建线程的函数主要有 ...
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- python enumerate 用法
A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...
- [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...
- 【JavaScript】innerHTML、innerText和outerHTML的用法区别
用法: <div id="test"> <span style="color:red">test1</span> tes ...
随机推荐
- 两种IO模式:Proactor与Reactor模式
在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作. 在比较这两个模式之前,我们首先的搞明白 ...
- 【HDOJ 5371】 Hotaru's problem
[HDOJ 5371] Hotaru's problem Manacher算法+穷举/set Manacher算法一好文:http://blog.csdn.net/yzl_rex/article/de ...
- Controller//控制器
#include<opencv2\core\core.hpp> #include<opencv2\imgproc\imgproc.hpp> #include<opencv ...
- php接收post过来的 json数据 例子
html代码 <html> <head> <title>json</title> <script src="//cdn.bootcss. ...
- Android 非静态内部类导致内存泄漏原因深入剖析
背景 上周发现蘑菇街IM-Android代码里面.一些地方代码编写不当.存在内存泄漏的问题.在和疯紫交流的过程中.发现加深了一些理解,所以决定写一下分析思路,相互学习. 内存泄漏 一个不会被使用的对象 ...
- 算法排序-NB三人组
快速排序: 堆排序: 二叉树: 两种特殊二叉树: 二叉树的存储方式: 小结: 堆排序正题: 向下调整: 堆排序过程: 堆排序-内置模块: 扩展问题topk: 归并排序: 怎么使用: NB三人组小结
- Autofac基本使用(转载)
AutoFac是.net平台下的IOC容器产品,它可以管理类之间的复杂的依赖关系.在使用方面主要是register和resolve两类操作. 这篇文章用单元测试的形式列举了AutoFac的常用使用方法 ...
- Page (computer memory)
A page, memory page, or virtual page is a fixed-length contiguous block of virtual memory, described ...
- 虚拟机linux安装mysql
安装mysql时需要的全套安装包 mysql-5.1.73-3.el6_5.i686.rpm mysql-libs-5.1.73-3.el6_5.i686.rpm mysql-server-5.1.7 ...
- OC浅析一
Objective-C是一门简单的语言,95%是C.只是在语言层面上加了些关键字和语法.真正让Objective-C如此强大的是它的运行时.它很小但却很强大.它的核心是消息分发. 在Objective ...