c - 用于 C 中互斥的 Pthread 互斥锁的 Posix 信号量等效项
问题描述
以下面这段代码为例(由https://www.geeksforgeeks.org/condition-wait-signal-multi-threading/提供)将 apthread_mutex_lock()
和转换pthread_mutex_unlock()
为 POSIX 并实现函数之间互斥的方法是什么.
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
pthread_cond_t cond1 = PTHREAD_COND_INITIALIZER;
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
int done = 1;
void* foo()
{
pthread_mutex_lock(&lock);
if (done == 1) {
done = 2;
printf("Waiting on condition variable cond1\n");
pthread_cond_wait(&cond1, &lock);
}
else {
printf("Signaling condition variable cond1\n");
pthread_cond_signal(&cond1);
}
pthread_mutex_unlock(&lock);
printf("Returning thread\n");
return NULL;
}
解决方案
推荐阅读
- c++ - 在平衡括号代码中出现运行时错误
- flutter - Flutter- Mapbox 拖动标记并获得新位置
- c# - 如何在调用 IdentityReference 值时给出 If 条件
- javascript - UIkit.toggle() 编程使用切换自身
- perl - Perl 脚本在路由器上设置 snmp 设置
- html - 我需要在刀片文件中的表列上迭代一个数组
- node.js - 我们可以在 AWS Elastic beanstalk 上分别实现前端和后端吗?
- node.js - POST 请求返回 422(无法处理的实体)(MERN)
- javascript - Babel 不允许没有 .js 文件扩展名的导入
- android - 添加 ConstraintLayout 后工具栏不可见