C中是否有办法在C程序中创建所有线程,等待其他活动线程,然后按照它们来的顺序释放它们,比如等待线程的队列?
答案 0 :(得分:0)
我会试着通过给你上个学期的一些笔记来帮助......
线程
GCC计划-lpthread
#include <pthread.h>
int main(int argc, char *argv[]) {
这将启动类/调度程序并将其命名为mulo
pthread_mutex_t mulo = PTHREAD_MUTEX_INITIALIZER;
这会启动一个停止并开始执行线程的条件
pthread_cond_t c = PTHREAD_COND_INITIALIZER;
定义将成为线程的结构
pthread_t t1, t2, t3;
pthread_t array[3]; // this is valid to set multiple variables
定义范围/命名空间
pthread_mutex_init(&mulo, NULL);
创建流程
pthread_create(&t1, NULL, printMessage, NULL);
或只是..
fork();
验证创建,线程ID的类型为pid_t(int)
pid_t pid;
pid = fork(); // All child processes return 0.. if error = -1
锁定(和解锁)一个函数,这样一次只能有一个进程运行它
pthread_mutex_lock(&mulo);
pthread_mutex_unlock(&mulo);
用于发出解锁信号
pthread_cond_signal(&c);
pthread_cond_wait(&c, &mulo);
所有使用线程的函数都必须是函数指针
void *printMessage() { …. }
pthread_create(&t1, NULL, printMessage, NULL);
从线程传递值
pthread_create(&array[i], NULL, runCommand, (void *) &command);
void *inc_count(void *idp) {
int passed_in_value = *((int *) idp);
.
.
.
}
完成它
pthread_join(t1,NULL);
pthread_join(t2,NULL);