我正在编写一个网络应用程序。并且有一些关于线程竞争条件的问题。
“cd”是一个套接字描述符。我的一个线程检索套接字描述符并通过套接字发送一些数据。
假设 map_sd 返回 5。但是另一个线程可能会关闭套接字 5 并重新分配另一个。这将破坏程序的逻辑。
// wait until there is valid descriptor mapping
while( !(cd = map_sd( sd )) ){
sleep(1);
}
// forward PAYLOAD header
if( send(cd, &payload, sizeof(PAYLOAD), MSG_NOSIGNAL) < 0 ){
printf("send fail 813\n");
}
我想要的是使上面的代码“原子”当我在 linux 中使用 pthread 库时我该怎么做?
先感谢您。