⑴ C語言多線程如何實現
線程之間沒有共享數據,不需要線程同步
你在主函數裡面,把線程銷毀的太快了,線程都沒來得及執行完你就退出了,在創建完線程之後,加個sleep等待幾秒再銷毀線程。
同時注意一下,主進程退出的話,所有線程也會退出。
如果要准確的等待線程執行完再銷毀,可以使用join方法或者共享標志位的方法
⑵ C語言能實現多線程么
可以,在Windows下面,用CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreateionFlags,
LPDWORD lpThreadId)
函數可以創建一個線程,第一個參數指線程的安全屬性的設定,第二個參數表示線程堆棧的大小,第三個參數表示線程函數名稱,第四個參數線程執行的參數,第五個參數指線程的優先順序,最後一個參數指向線程的ID。關於windows下用C創建多線程可以查查MSDN即可。
如果還是不懂的話,建議樓主先弄懂計算機操作系統的原理,或者弄懂計算機線程與進程的異同與關系
⑶ C語言多線程的操作步驟
線程創建
函數原型:intpthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void),void *restrict arg);
返回值:若是成功建立線程返回0,否則返回錯誤的編號。
形式參數:pthread_t*restrict tidp要創建的線程的線程id指針;const pthread_attr_t *restrict attr創建線程時的線程屬性;void *(start_rtn)(void)返回值是void類型的指針函數;void *restrict arg start_rtn的形參。
線程掛起:該函數的作用使得當前線程掛起,等待另一個線程返回才繼續執行。也就是說當程序運行到這個地方時,程序會先停止,然後等線程id為thread的這個線程返回,然後程序才會斷續執行。
函數原型:intpthread_join(pthread_tthread, void **value_ptr);
參數說明如下:thread等待退出線程的線程號;value_ptr退出線程的返回值。
返回值:若成功,則返回0;若失敗,則返回錯誤號。
線程退出
函數原型:voidpthread_exit(void *rval_ptr);
獲取當前線程id
函數原型:pthread_tpthread_self(void);
互斥鎖
創建pthread_mutex_init;銷毀pthread_mutex_destroy;加鎖pthread_mutex_lock;解鎖pthread_mutex_unlock。
條件鎖
創建pthread_cond_init;銷毀pthread_cond_destroy;觸發pthread_cond_signal;廣播pthread_cond_broadcast;等待pthread_cond_wait。