C 语言多线程与锁机制
C 语言多线程与锁机制
多线程
#include <pthread.h>
void *TrainModelThread(void *id) {
...
pthread_exit(NULL); //线程退出
}
pthread_t *pt = (pthread_t *)malloc(num_threads * sizeof(pthread_t)); //创建 num_threads 个线程
for (a = 0; a < num_threads; a++)
pthread_create(&pt[a], NULL, TrainModelThread, (void *)a); //注册线程
for (a = 0; a < num_threads; a++)
pthread_join(pt[a], NULL); //线程执行
锁机制
pthread_mutex_t writable[100]; //lock
pthread_mutex_init(&writable[i], NULL); //锁的初始化
pthread_mutex_lock(&writable[i]); //加锁
... //临界区
pthread_mutex_unlock(&writable[i]); //解锁
编译
gcc -g main.c -o main -pthread
注意:在编译时要加上 -pthread 选项
智慧在街市上呼喊,在宽阔处发声。