对多线程编程的需求不多,因而在这方面的实例和教程很少。对于编程大牛来说,这也不是一个很深奥的实例。这里做一个简单实用的实例,它使用了 C11 标准头 threads.h ,适用于新的多线程标准。
threads_create() 是一个通用的创建线程模块。其中参数 fun 是一个函数指针,指向需要多线程运行的函数。其中参数 threads_num 是需要为 fun 创建的线程数。代码如下:
#include <threads.h> //包含多线程支持库头文件
void threads_create(void(*fun)(void *),int threads_num) {
int ret; //保存thrd_create函数的返回值用于判断线程是否创建成功:0为成功,1为失败。
long trdi; //用于线程
thrd_t thr[threads_num]; //THREADS_NUM个线程
for (trdi = 0;trdi<threads_num;trdi++) {
ret = thrd_create(&thr[trdi], (thrd_start_t) fun, (void *)trdi); //将fun函数放在一个新的线程中执行
if (ret == thrd_error) {
printf("ERORR; thrd_create() call failed\n");
exit(EXIT_FAILURE);
}
}
for (trdi = 0; trdi < threads_num; trdi++) {
thrd_join(thr[trdi], NULL);
}