多个用 PTHREAD_MUTEX_INITIALIZER 初始化的 pthread_mutex_t 不是同一个 mutex

来源:互联网 发布:linux无法重启网络服务 编辑:程序博客网 时间:2024/06/06 01:36

参考:http://stackoverflow.com/questions/6310746/initializing-pthread-mutexes


【结论】

static pthread_mutex_t m0 = PTHREAD_MUTEX_INITIALIZER;static pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER;static pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER;

像这样初始化的3个 pthread_mutex_t,并不是同一个 mutex,即在使用时,相互不影响。


【说明】


static pthread_mutex_t m0 = {0x32AAABA7, {0}};static pthread_mutex_t m1 = {0x32AAABA7, {0}};static pthread_mutex_t m2 = {0x32AAABA7, {0}};

尽管通过 gcc -E code.cpp,看似初始化成同样的东西,但

It is essentially an enum value, but with a Hamming code protection to (a) make it safe and (b) make it obscure. You have three distinct mutexes here


0 0
原创粉丝点击