• _beginthreadex()和_endthreadex()


    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://golog.blogbus.com/logs/10964622.html

    线程开始和停止函数! 

    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);

    }


  • 相关阅读:
    企业级应用TOMCAT
    HTTP服务及状态码
    Zabbix服务网页报错汇总
    spring aop 嵌套方法注解不生效
    oracle数据库密码修改和解锁
    redis安装
    docker简介
    ffmpeg简介
    JAVA学习笔记之变量
    JAVA学习笔记之类和对象
  • 原文地址:https://www.cnblogs.com/cy163/p/1561691.html
Copyright © 2020-2023  润新知