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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

pthread_once()函数详解

發布時間:2024/1/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pthread_once()函数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:https://www.cnblogs.com/lit10050528/p/4325888.html

在多線程環境中,有些事僅需要執行一次。通常當初始化應用程序時,可以比較容易地將其放在main函數中。但當你寫一個庫時,就不能在main里面初始化了,你可以用靜態初始化,但使用一次初始化(pthread_once)會比較容易些。

int pthread_once(pthread_once_t *once_control, void (*init_routine)(void));

功能:本函數使用初值為PTHREAD_ONCE_INIT的once_control變量保證init_routine()函數在本進程執行序列中僅執行一次。

在多線程編程環境下,盡管pthread_once()調用會出現在多個線程中,init_routine()函數僅執行一次,究竟在哪個線程中執行是不定的,是由內核調度來決定。

Linux Threads使用互斥鎖和條件變量保證由pthread_once()指定的函數執行且僅執行一次,而once_control表示是否執行過

如果once_control的初值不是PTHREAD_ONCE_INIT(Linux Threads定義為0),pthread_once()的行為就會不正常。

在LinuxThreads中,實際"一次性函數"的執行狀態有三種:NEVER(0)、IN_PROGRESS(1)、DONE(2),如果once初值設為1,則由于所有pthread_once()都必須等待其中一個激發“已執行一次”信號,因此所有pthread_once()都會陷入永久的等待中;如果設為2,則表示該函數已執行過一次,從而所有pthread_once()都會立即返回0.

?

總結

以上是生活随笔為你收集整理的pthread_once()函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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