_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 ...
随机推荐
- PHP中使用Redis
Redis是什么 Redis ( REmote DIctionary Server ) , 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用 ...
- css实现轮播效果图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Logistic Regression 笔记与理解
Logistic Regression 笔记与理解 Logistic Regression Hypothesis 记为 H(theta) H(theta)=g(z) 当中g(z),是一个叫做Logis ...
- C语言宏定义时#(井号)和##(双井号)作用
#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号. #define example(instr) prin ...
- linux 查找最后几条数据
tail(选项)(参数) -n<N>或——line=<N>:输出文件的尾部N(N位数字)行内容. 例如:grep 查询 2018-02-*/*.log |tail -n 5查询 ...
- VC ++6.0英文版常用菜单使用参考【转载整理】
(1)File菜单 New:打开“new”对话框,以便创建新的文件.工程或工作区. Close Workspace:关闭与工作区相关的所有窗口. Exit:退出VC6环境,将提示保存窗口内容等. (2 ...
- Red Black Tree java.util.TreeSet
https://docs.oracle.com/javase/9/docs/api/java/util/SortedMap.html public interface SortedMap<K,V ...
- linux 网络设备,网卡配置 ,相关
网络设备,网卡配置: Eth0是物理网卡:唯一mac地址,Bcast:广播地址,MAsk:子网掩码, Lo:系统自带的回环的ip地址,可以做一些基本的测试应用,比如没有网卡就用127.0.0.1, r ...
- 使用php ffmpeg处理视频
工作中遇到video加载视频的问题,但是视频封面在手机上无法取到视频的第一帧,video标签无法在手机上取到第一帧,经过几天的研究于搜索终于找到比较好用的办法,就是php ffmped 插件,该插件的 ...
- 使用单例模式设计PDO数据操作类
<?php /** * MyPDO * @author LHL <506698615@qq.com> * @date 2016.04.20 */ class MyPDO{ prote ...