main()
{
i=9000000000; // to synchronize thread with while loop
while(i)i--; //if i don't use these two lines then my program terminates before thread starts.
udp_socket();
fun();
}
udp_socket()
{
// open a udp socket then create thread
pthread_create(tid1,NULL,fun2,(int *)socket_descriptor2);
}
fun()
{
}
fun2(int socket_descriptor2)
{
while(1)
{
}
}
線程同步我打開UDP套接字然後創建線程,線程內while循環時間可持續recieving所定義的IP地址和端口的數據。與主()
我當主終止.....
我要執行我的線程持續,即使在main()終止或我的main()也不斷沒有終止執行線程停止工作。
我該如何執行此操作?
該程序沒有任何意義。 '我'什麼?九十億?沒有原型?請告訴我,該程序編譯沒有錯誤或*警告*。更不用說格式了。您*知道如何創建一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)? –
順便說一句,您可能想要搜索並閱讀* detached threads *或'pthread_exit',或者只是分叉一個新進程。 –
使用while循環進行同步完全是錯誤的方式(通常)。即使你在某個時候開始工作,它也會非常依賴時序和系統,因此很可能在其他某個時候失敗。您需要與爲此目的而設計的機制(如信號量,互斥鎖,管道,等待,連接等)進行同步。併發是一個完整的計算機科學主題,因此如果您尚不知道理論,那麼最好從獲得基本理解開始在嘗試編寫多線程應用程序之前。 – kaylum