c - 在C中全局初始化互斥锁
问题描述
我有一些代码,其中两个 2 线程修改同一个变量的值,但具有两个不同的函数。所以我决定使用一个通用的互斥锁。那是:我在全球范围内初始化了它:
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#define perror_pthread(ret, msg) \
do { errno = ret; perror(msg); } while (0)
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; /*define a mutex-object */
pthread_mutex_init(&mutex,NULL); /*initialise this mutex object with default values */
我收到一条错误消息:
error: expected declaration specifiers or ‘...’ before ‘&’ token
pthread_mutex_init(&mutex,NULL); /*initialise this mutex object with default values */
^
我不知道这是否是一个好习惯,但我觉得两个函数应该有相同的互斥锁,以便在有锁时得到通知
解决方案
pthread_mutex_init
是一个函数,C 禁止文件范围内的表达式(即函数调用)。
使用静态初始化程序或pthread_mutex_init(...)
放入main()
.
推荐阅读
- python - 从 SQL 数据库中解析 Python 中的元素
- javascript - CSS 和 JavaScript 动画
- javascript - Vue.js - 当用户点击远离组件时显示表单错误
- filesystems - 外部驱动器显示错误的总“磁盘大小”
- facebook - Meta og:图像不适用于 facebook,并且未检测到预览共享链接图像
- r - 为什么我渲染的 tabsetPanel 图在 flexdashboard 中被截断?
- javascript - 重新加载数据后Vuejs内存泄漏
- c++ - 使用 OpenSSL EC_do_sign 函数签署交易哈希
- firebase - 查询不执行 if 语句
- python - 如何使用 python 将发布 json 消息发送到 kafka 主题?