簡體   English   中英

在 C 中全局初始化互斥鎖

[英]Initialise mutex globally in 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 is a function and C forbids expressions (ie function calls) at the file scope.

要么使用 static 初始化程序,要么將pthread_mutex_init(...)放入main()的開頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM