我正在閱讀高爾文Abrahim的操作系統原理。在過程同步的話題,下面的定義給出了檢查並設置功能稍後用來確保互斥:Process Synchronisation- TestAndSetLock
boolean TestAndSet(boolean *target) {
boolean rv = *target;
*target = TRUE;
return rv;
}
它在書中提到,該指令是一個特殊的硬件指令,它是自動執行。 我的問題是我如何在C中實現這個?我是否需要爲其他用戶定義的函數提供其定義,還是需要導入已實現此功能的某些庫?如果情況是前者,我自己定義函數,那麼它將以原子方式執行的保證是什麼?
通過這個詞原子上我所知道的是,它將作爲一個單一的指令執行,即如果兩個進程調用這個函數,然後被調用的函數將被順序執行,他們的語句不會交錯(即使轉換後機器語言)。
請幫忙。我在理解本書的文字方面遇到很多困難。
這樣的功能是由您的ABI和OS提供的,而不是由C直接提供的。請先檢查您的OS API,然後再靠近處理器上可用的插卡指令。 –
http://stackoverflow.com/questions/2287451/how-to-perform-atomic-operations-on-linux-that-work-on-x86-arm-gcc-and-icc – kaylum