linux pthread_t 定义,linux – 有无效的pthread_t id吗?

我想调用pthread_join给定的线程id,但只有当该线程已经启动。安全的解决方案可能是添加一个变量来跟踪哪个线程是否启动。但是,我不知道检查pthread_t变量是否可能,像下面的代码。

pthread_t thr1 = some_invalid_value; //0 ?

pthread_t thr2 = some_invalid_value;

/* thread 1 and 2 are strated or not depending on various condition */

....

/* cleanup */

if(thr1 != some_invalid_value)

pthread_join(&thr1);

if(thr2 != some_invalid_value)

pthread_join(&thr2);

其中some_invalid_value可以为0,或者依赖于实现的“PTHREAD_INVALID_ID”宏

PS:

我的假设是pthread_t类型是可比较和可分配的,假设基于

PPS:

我想这样做,因为我认为调用pthread_join上无效的线程id是undefinde行为。不是这样。然而,加入先前加入的线程是未定义的行为。现在让我们假设上面的“函数”被重复调用。

无条件地调用pthread_join并检查结果可能导致在先前加入的线程中调用pthread_join。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值