跳轉到內容

Aros/開發者/文件/庫/AROSC

來自 Wikibooks,開放世界中的開放書籍
Aros wikibook 的導航欄
Aros 使用者
Aros 使用者文件
Aros 使用者常見問題
Aros 使用者應用程式
Aros 使用者 DOS Shell
Aros/使用者/AmigaLegacy
Aros 開發文件
Aros 開發者文件
從 AmigaOS/SDL 移植軟體
Zune 初學者指南
Zune .MUI 類
SDL 初學者指南
Aros 開發者構建系統
特定平臺
Aros x86 完整系統 HCL
Aros x86 音訊/影片支援
Aros x86 網路支援
Aros Intel AMD x86 安裝
Aros 儲存支援 IDE SATA 等
Aros Poseidon USB 支援
x86-64 支援
摩托羅拉 68k Amiga 支援
Linux 和 FreeBSD 支援
Windows Mingw 和 MacOSX 支援
Android 支援
Arm Raspberry Pi 支援
PPC Power Architecture
其他
Aros 公共許可證

arosc 庫僅允許一次只有一個任務呼叫具有相同 libbase 的函式。據我所知,這不會違反任何標準。在以後的階段,將提供一個執行緒實現,它將對需要進行適當鎖定的 C 函式進行鎖定,當您實現自己的執行緒實現時,這也應該可以使用。

當前的 arosc 不是執行緒安全的,ABI V1 中的 C 庫也不是。最好的方法是在 AROS 上擁有類似於 clib2-ts 的前端。

YAM 沒有使用任何執行緒庫,而是使用它自己的執行緒實現。即使它使用 pthreads 之類的東西,C 執行時庫也負責保護其內部內容免受競爭條件的影響。沒有任何執行緒框架能夠從 C 庫中解除安裝此負載,因為這是內部內容。

對於 AROS 的 arosc.library,在對 __stdio_files 列表的所有隱式和顯式訪問進行簡單地 ObtainSemaphore()/ReleaseSemaphore() 配對將是一個良好的開端。但是,很可能還有許多其他位置需要強制單執行緒以避免競爭條件。

作為一種中間解決方案,已經可以提供一個靜態連結庫,它會在需要它的函數週圍進行適當的鎖定,例如 arosc-ts(類似於 clib2-ts)。

也許您應該聯絡 Olaf Barthel 並將其 clib2 移植到 AROS。我已經詢問過他,他對此類移植沒有異議。使用 clib2 的系統越多,發現的錯誤就越多。我認為作為靜態連結庫的 clib2 C 實現將補充依賴於某些 clib2 特性的程式的 AROS C 共享庫。

這可能有點天真,我們可能需要考慮為每個執行緒進行 AROS C *共享* 庫的 OpenLibrary()。這消除了鎖定問題,我們只需要使 AROS C 資料區域對每個執行緒都是私有的。

這可能需要一些標頭檔案和連結器支援,但它應該比完整的鎖定實現更容易實現,並且將是輕量級的程式碼更改。這不是使用者想要的。他們希望能夠讓一個執行緒使用另一個執行緒開啟的檔案進行 IO 操作。

參考文獻

[編輯 | 編輯原始碼]
華夏公益教科書