在我的Linux應用程序中,我有兩個線程都嘗試使用相同的UDP
客戶端套接字發送UDP
廣播數據包(大約50-500字節)。他們每2-3秒做一次。在這種情況下,圍繞「發送(...)」條款,我可以放入pthread_mutex_lock
或pthread_spin_lock
。理論上說,如果這是一個非常小的操作,則pthread_spin_lock
效率更高(儘管在很短的時間內CPU消耗量很高)。但是如果它的操作更大,那麼pthread_mutex_lock
就更好了。對於這種特殊情況,我應該使用spin_lock還是mutex_lock?
發送一個被認爲「足夠小」的UDP
數據包以保證使用pthread_spin_lock
,或者我應該堅持使用pthread_mutex_lock
?
感謝
這兩個線程是否發出相同類型的數據包?必須發送這兩個數據包還是可以找到佔用的通道的一個線程跳過傳輸? –
@Jens:是的,兩個線程發出相同類型的pkt(相同的頭文件和一些可變數據量)。傳輸不能被跳過。 –
@全部 - 其他:感謝所有的答案。所有似乎都解決了像send()這樣的系統調用的情況。那麼更通用的問題是:在用戶空間中是否有使用螺旋鎖的情況? –