2011-09-29 118 views
5

將我碰到一個錯誤,如果我創建了一個並行線程,這是由主函數創建一個內pthread_create的。如果,我可以那麼什麼東西我應該照顧?我可以在pthread中創建一個pthread,它已經由main創建了嗎?

重要....:我在做一個socket編程,在那裏我已經開通的各5個線程在其上偵聽的端口,當過我收到一個消息,我想創建一個線程這需要在消息中分離出來的端口並使用pwrite寫入文件。所以,我有幾個問題,請你能幫我嗎?

如果沒有,那麼什麼是線程中創建線程的另一種解決方案..?

還是會再給我分割故障???

否則我會碰到一些競爭條件....

+1

是的,你可以做到這一點。 –

回答

4

pthread_create創建一個新線程。獨立於調用 的地方。在端口上創建一個連接的新線程幾乎是標準程序。

+0

不過,我的問題是我從recv的線程所採取的數據和發送它作爲一個arguement到的recv後創建的線程....現在因爲有5個線程同時聽,這不是要在接收的創造競爭條件包..... – Invictus

+0

@Invictus無論您創建線程的位置如何,您都必須遵循常用的線程安全規則。很大程度上取決於你如何使用accept來監聽,每個返回的int都是一個單獨的套接字,它可以毫無問題地傳遞給子線程。如果您正在處理UDP連接並使用'recvfrom'進行偵聽,則應爲每個調用分配一個新的緩衝區,並將接收到的緩衝區傳遞給子線程,以便在線程通過時釋放它。在這兩種情況下,每個線程都應該監聽不同的套接字(端口)。 –

相關問題