如何在纯C中启动线程?

我在C中使用fork()来启动另一个进程。 我如何开始一个新的线程?

既然你提到了fork(),我假设你在一个类Unix系统上,在这种情况下POSIX线程 (通常称为pthreads)是你想要使用的。

具体而言,pthread_create()是您需要创build一个新线程的函数。 它的论据是:

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)

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

查看pthread (POSIX线程)库。