日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言线程经常段错误的是,由pthread_create引起的段异常

發布時間:2024/7/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言线程经常段错误的是,由pthread_create引起的段异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由pthread_create引起的段錯誤

一般線程的結束是由進程內的其他線程來結束的,調用pthread_cancel.

但是需要考慮到被結束線程的性質,一方面,線程是可被結束,也可無法結束,即不響應該信號;另一方面,如果線程是可被結束的,那么結束的方式有兩種,一種是同步,當線程收到這個信號的時候先掛起,等到下一個取消點時再響應該信號,另一種是異步,收到這個信號時,線程立即結束。

注意:線程默認是可被取消,同步結束。

什么是取消點?

取消點是很多的系統調用,pthread_join,write等很多系統調用,包括很多的庫函數調用,printf等,因為printf中有前面所說的系統調用write。

是不是取消點我覺得可以自己做一個簡單地測試。

為什么要考慮線程的性質呢?

考慮以下情況:

父線程A和子線程B(未設置異步結束),共同訪問資源C,父線程結束子線程B,但是pthread_cancel只是發送信號,接著父線程接著釋放資源C,當B恢復運行時,由于不是直接結束而會等待下一個取消點,而在下一個取消點前,B訪問了資源C,此時程序就會崩潰。

所以線程間的同步,要么設置子線程異步結束,或者父線程等待子線程結束的信號。

附:

設置線程同步結束還是異步結束接口:

int pthread_setcanceltype(int type, int *oldtype);

type可取值異步PTHREAD_CANCEL_ASYNCHRONOUS ? ? ? ?同步PTHREAD_CANCEL_DEFERRED ? oldtype返回原先的屬性

總結

以上是生活随笔為你收集整理的c语言线程经常段错误的是,由pthread_create引起的段异常的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。