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


本文标签: 线程 创建 函数 属性 指向