gpt4 book ai didi

c - 同步所有事件线程C并一一释放?

转载 作者:行者123 更新时间:2023-11-30 19:35:06 25 4
gpt4 key购买 nike

C 中有没有一种方法可以让 C 程序中的所有线程等待其他事件线程,然后按它们到来的顺序释放它们,就像等待线程队列一样?

最佳答案

我会尝试给你一些我上学期做的笔记来帮助你......

话题

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);

关于c - 同步所有事件线程C并一一释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43085707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com