如何在普通C中启动线程?

时间:2020-03-05 18:51:33  来源:igfitidea点击:

我已经在C语言中使用fork()启动了另一个进程。如何启动新线程?

解决方案

回答

pthreads是一个好的开始,请看这里

回答

检出pthread(POSIX线程)库。

回答

自从我们提到fork()以来,我假设我们正在使用类似Unix的系统,在这种情况下,我们要使用POSIX线程(通常称为pthread)。

具体来说,pthread_create()是创建新线程所需的函数。它的参数是:

int  pthread_create(pthread_t  *  thread, pthread_attr_t * attr, void *
   (*start_routine)(void *), void * arg);

第一个参数是返回的线程ID指针。第二个参数是线程参数,除非我们要以特定优先级启动线程,否则它可以为NULL。第三个参数是线程执行的函数。第四个参数是执行时传递给线程函数的单个参数。

回答

AFAIK,ANSI C没有定义线程,但是有各种可用的库。

如果我们在Windows上运行,请链接到msvcrt并使用_beginthread或者_beginthreadex。

如果我们在其他平台上运行,请签出pthreads库(我确定还有其他库)。

回答

线程不是C标准的一部分,因此使用线程的唯一方法是使用某些库(例如:Unix / Linux中的POSIX线程,_beginthread / _beginthreadex,如果我们想使用该线程中的C运行时或者仅使用CreateThread Win32 API)