gpt4 book ai didi

multithreading - 为什么 PTHREAD_COND_INITIALIZER 只能在声明时用于初始化条件变量?

转载 作者:行者123 更新时间:2023-12-04 14:17:14 24 4
gpt4 key购买 nike

Since the PTHREAD_COND_INITIALIZER is actually a structure initializer, it may be used to initialize a condition variable only when it is declared.



来自 : 使用 POSIX 线程进行多线程编程

问题 : 无法理解上面的引用。
只是一个宏, 为什么我不能用它在运行时初始化条件变量吗?
结构初始值设定项与什么有什么关系?

最佳答案

因为它是一个结构初始化器,所以除了它的声明之外,你不能用它在语句中初始化结构。

它在我的系统上定义如下:

#define PTHREAD_COND_INITIALIZER {_PTHREAD_COND_SIG_init, {0}}

展开使用,我们看到:
pthread_cond_t p = PTHREAD_COND_INITIALIZER; // << ok!
p = PTHREAD_COND_INITIALIZER; // << compiler error =\

那是,
p = PTHREAD_COND_INITIALIZER;

扩展为:
p = {_PTHREAD_COND_SIG_init, {0}};

关于multithreading - 为什么 PTHREAD_COND_INITIALIZER 只能在声明时用于初始化条件变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9463560/

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