Tôi đang cố gắng chuyển một số mã tôi đã viết từ Mac OS X sang Linux và đang cố gắng tìm một sự thay thế phù hợp cho OSX chỉ OSAtomic.h
. Tôi tìm thấy gcc __sync*
gia đình, nhưng tôi không chắc chắn nó sẽ tương thích với trình biên dịch cũ/hạt nhân tôi có. Tôi cần mã để chạy trên GCC v4.1.2 và kernel 2.6.18.Hoạt động nguyên tử trong C trên Linux
Các hoạt động cụ thể tôi cần là:
- Tăng
- Decrement
- Hãy so sánh và Swap
gì là lạ là chạy locate stdatomic.h
trên máy linux tìm thấy các tập tin tiêu đề (trong thư mục C++), trong khi chạy lệnh tương tự trên máy OSX của tôi (gcc v4.6.3) không trả về gì cả. Tôi phải cài đặt gì để có được thư viện stdatomic, và nó có hoạt động với gcc v 4.1.2 không?
Lưu ý phụ, tôi không thể sử dụng bất kỳ thư viện của bên thứ ba nào.
Nội trang nguyên tử GCC được ghi lại như một phần của [4.1.1] (http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Atomic-Builtins.html). – jxh
Tương tự cho tăng và tìm nạp và không yêu cầu phiên bản GCC: http://stackoverflow.com/questions/2353371/atomic-increment-fetch –