私はアプリケーションを書いています。このアプリケーションはロックフリーキューの実装であり、Linuxで実行され、GCC3.4.2によってコンパイルされます。
実装は、次の不可分操作に基づいています。
__sync_fetch_and_add
__sync_fetch_and_sub
__sync_bool_compare_and_swap
__sync_val_compare_and_swap **
問題は、GCCにはGCC 4.1まで上記のビルトインがないため、現在、アセンブリ言語で自分で定義する必要があります。しかし、私はアセンブリについて何も知りません、誰かが私に上記の機能の定義を与えることができますか?どんな助けでも大歓迎です。
詳しくは:
/// @briefは、a_ptrが指す変数にa_countをアトミックに追加します///@return以前にメモリにあった値__sync_fetch_and_add
/// @briefは、a_ptrが指す変数からa_countをアトミックに減算します///@return以前にメモリにあった値__sync_fetch_and_sub
/// @brief Compare And Swap /// * a_ptrの現在の値がa_oldValの場合、a_newValを*a_ptrに書き込みます///@return比較が成功し、a_newValが書き込まれた場合はtrue __sync_bool_compare_and_swap
/// @brief Compare And Swap /// * a_ptrの現在の値がa_oldValの場合、a_newValを*a_ptrに書き込みます///@return操作の前に*a_ptrの内容__sync_val_compare_and_swap(a_ptr、a_oldVal、a_newVal)