0
我正在寫一個網絡應用程序。 並且有關於線程競爭狀態的一些問題。linux多線程編程,原子碼區域
「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中使用並行線程庫?
預先感謝您。
謝謝!它的幫助 – daehee