成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

靈活運用Unix 線程知識

系統 其他OS
我們知道,Unix 線程安全是為了避免數據競爭或者數據設置的正確性依賴于多個Unix 線程修改數據的順序。但在很多時候,Unix 線程的安全問題得不到保障。

今天我們來學習用Unix 線程的知識來解決問題。在 UNIX 編程中,我們會經常使用系統調用來完成期望的功能;而與此同時,我們也需要付出大段的代碼來檢測、輸出錯誤和其他意外情況。

Unix 線程安全是為了避免數據競爭或者數據設置的正確性依賴于多個Unix 線程修改數據的順序。假設你的代碼所在的進程中有多個Unix 線程在同時運行,而這些線程可能會同時運行這段代碼。如果每次運行結果和單線程運行的結果是一樣的,而且其他的變量的值也和預期的是一樣的,就是Unix 線程安全的。

Unix 線程的使用中以下是系統調用失敗的可能原因:

系統可能出現資源短缺或者程序使用的資源可能超過系統為單個程序規定的上限。常見的情況有:程序可能嘗試分配大量內存,或者同時打開很多文件等。
程序執行操作時,可能會由于權限不足而被系統阻止。例如,程序可能會試圖寫一個只讀的文件,或者企圖訪問其他進程的內存空間。 傳入系統調用的參數可能無效,原因可能是用戶提供無效輸入或者程序本身的 bug。例如,程序可能會傳入一個無效的內存地址或者無效的文件描述符。

系統調用還有可能因為程序之外的原因出錯。系統調用訪問硬件的時候經常會有這種情況發生。設備可能會出現異常錯誤或者不支持特定的操作,或者可能會出現磁盤沒有插入驅動器中的情況出現。 系統調用有的時候會被外部事件 ( 如信號等 ) 中斷。這可能不代表真正的調用失敗,但是如果有必要,程序應當重新嘗試執行系統調用。

對于函數來說,在多Unix 線程或有異常控制流的情況下 , 當某個函數運行到中途時 , 控制流 ( 也就是當前指令序列 ) 就有可能被打斷而去執行另一個函數。而這個函數很有可能是它本身。如果在這種情況下不會出現問題 , 比如說數據或狀態不會被破壞,行為確定。那么這個函數就被稱做 " 可重入 " 的。

在多Unix 線程編程中,有兩種方法使庫函數可以保證其安全。一個是簡單的將合適的代碼使用互斥鎖包起來,這樣可以保證同時只有一個線程執行這一段例程。雖然這種方法大部分情況下都能奏效,但是它的性能卻非常糟糕。而且對于諸如 strtok 函數,該方法就完全不能工作了,因此很多 UNIX 系統都存在 _r 的接口函數。

另一個更好的辦法是確保庫函數可以同時在多個Unix 線程情況下安全的執行。這里指的不僅僅是帶有后綴 _r 的可重入對等函數;畢竟可重入和線程安全(Thread-Safe)是兩個不同的概念:可重入函數一定是Unix 線程安全的;線程安全的函數可能是重入的,也可能是不重入的;Unix 線程不安全的函數一定是不可重入的。所以諸如 malloc,free 等函數也在此列,屬于Unix 線程安全的庫函數。

當然,如果你在單線程應用程序中使用Unix 線程安全函數會在一定程度上降低性能,所以盡量避免在單線程應用程序中使用它們。

【編輯推薦】

  1. 初步講解Unix 線程知識
  2. 知識講堂Unix內核教學
  3. 淺析Unix內核索引結點表
  4. Unix內核與Linux內核大比拼
  5. 知識講解Unix 消息隊列
責任編輯:小霞
相關推薦

2009-12-07 17:20:29

PHP stdClas

2009-02-20 10:59:21

Vista幫助系統使用技巧

2010-04-27 17:06:16

AIX vmstat

2019-10-21 15:30:54

JS技巧前端

2011-07-25 16:25:47

2009-10-23 15:30:53

無線接入技術

2011-07-08 13:56:00

域控制器服務器

2013-04-07 10:15:34

2013-04-10 10:39:57

2009-07-01 17:58:20

JSP

2024-01-26 16:28:28

C++動態內存開發

2010-04-29 16:15:26

Unix文件

2021-07-12 07:08:52

Spring Boot集成框架

2012-02-04 14:56:52

JP1數據中心

2009-12-01 11:33:03

PHP判斷字符串的包含

2012-01-10 10:05:47

文件目錄訪問控制UGO

2016-10-08 12:46:08

Linux監控限制

2010-05-27 13:32:36

IIS服務安全認證

2011-08-23 18:30:59

MySQLTIMESTAMP

2021-10-08 06:50:31

Volatile設計原理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩国产一区二区三区不卡 | 色狠狠一区 | 亚洲日韩欧美一区二区在线 | 午夜一区二区三区在线观看 | 国产在线观看网站 | 精品一区二区三区在线观看国产 | 久久综合国产精品 | 欧美日韩不卡合集视频 | 欧美4p| 日日干日日操 | 国产精品一区在线观看 | 欧美色性 | 欧美小视频在线观看 | 一区二区欧美在线 | 久久久91精品国产一区二区三区 | 国产探花在线精品一区二区 | 高清视频一区二区三区 | 久优草| 亚洲男人网 | 在线欧美亚洲 | 成人激情视频在线观看 | 久久无毛| 成人一区二区视频 | 亚洲福利| 亚洲综合在 | 91在线看片 | 亚洲一区二区视频 | 国产视频第一页 | 日韩免费av| 福利视频日韩 | 男人的天堂在线视频 | 中文字字幕一区二区三区四区五区 | 日韩一区二区三区在线观看 | 蜜桃精品噜噜噜成人av | 日韩欧美国产成人一区二区 | 国产免费让你躁在线视频 | 一级黄色片毛片 | 亚洲视频在线一区 | 男女免费观看在线爽爽爽视频 | 国产午夜久久久 | 日韩欧美一区二区三区 |