admin 管理员组文章数量: 887021
2024年1月18日发(作者:slidedown意思)
c创建线程的三种方法
c创建线程的三种方法
1、pthread_create函数:
pthread_create函数是一种标准的C库函数,它可以用来创建新的线程。它有以下几个参数:
(1)pthread_t *thread:指向要创建的线程ID;
(2)const pthread_attr_t *attr:指向线程属性对象,如果为NULL,则使用默认属性;
(3)void *(*start_routine)(void *):指向一个函数,这个函数将在新线程中执行;
(4)void *arg:传递给新线程的参数。
使用pthread_create函数创建线程的例子如下:
#include
//线程处理函数 void *thread_func(void *arg)
{ //do something }
int main() { pthread_t thread; //创建新线程
int ret = pthread_create(&thread, NULL,
thread_func, NULL); if (ret != 0) { //创建线程失败 } //其他代码 return 0; }
2、CreateThread函数:
CreateThread函数是Windows提供的API函数,它可以创建一个新的线程。它有以下几个参数:
(1)LPSECURITY_ATTRIBUTES lpThreadAttributes:指向一个安全属性结构,用来控制线程安全性;
(2)SIZE_T dwStackSize:指定线程堆栈大小;
(3)LPTHREAD_START_ROUTINE lpStartAddress:指向一个函数,这个函数将在新线程中执行;
(4)LPVOID lpParameter:传递给新线程的参数;
(5)DWORD dwCreationFlags:线程的创建标志;
(6)LPDWORD lpThreadId:指向线程ID。
使用CreateThread函数创建线程的例子如下:
#include
//线程处理函数 DWORD WINAPI thread_func( LPVOID
lpParam ) { //do something return 0; }
int main() { HANDLE hThread; DWORD
dwThreadId; //创建新线程 hThread =
CreateThread( NULL, // default
security attributes 0, // use
default stack size thread_func, //
thread function name NULL, //
argument to thread function 0,
// use default creation flags &dwThreadId);
// returns the thread identifier //其他代码
return 0; }
3、boost::thread类:
boost::thread类是一个C++模板类,它可以创建新的线程。它有以下几个构造函数:
(1)thread():如果没有指定任何参数,则创建一个新的空线程;
(2)thread(F && f):该构造函数接收一个函数f,在新线程中会调用函数f;
(3)thread(F && f,Args &&... args):该构造函数接收一个函数f和多个参数args,在新线程中会调用函数f,并传入参数args。
使用boost::thread类创建线程的例子如下:
#include
//线程处理函数 void thread_func(int n) { //do
something }
int main() { boost::thread t(thread_func,
10); //其他代码 (); return 0; }
总结:
c创建线程的三种方法分别是:pthread_create函数、CreateThread函数、boost::thread类。
pthread_create函数是一种标准的C库函数,它可以用来创建新的线程,它有四个参数:pthread_t *thread,const pthread_attr_t *attr,void
*(*start_routine)(void *),void *arg。
CreateThread函数是Windows提供的API函数,它可以创建一个新的线程,它有六个参数:LPSECURITY_ATTRIBUTES lpThreadAttributes,SIZE_T
dwStackSize,LPTHREAD_START_ROUTINE
lpStartAddress,LPVOID lpParameter,DWORD
dwCreationFlags,LPDWORD lpThreadId。
boost::thread类是一个C++模板类,它可以创建新的线程,它有三个构造函数:thread(),thread(F &&
f),thread(F && f,Args &&... args)。
版权声明:本文标题:c创建线程的三种方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705565484h490192.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论