2010-02-23 23 views

Trả lời

1

Phụ thuộc vào những gì bạn muốn trao đổi. Trong assembler cho x86, bạn có thể có được một hoán đổi nguyên tử "gần", nếu không tôi sẽ đi với một số giải pháp sử dụng khóa, điều này sẽ khác nhau trên Win32/{Linux, Darwin}.

Nếu bạn đang tìm kiếm một thư viện, có một cái nhìn tại APR (Apache xách tay Runtime) - http://apr.apache.org/

+0

http://apr.apache.org/docs/apr/1.3/group__apr__atomic.html#ge45c529f14f8489102382bd3fd4cce22 cụ thể là bạn nên sử dụng so sánh và hoán đổi nguyên tử apr, sử dụng cùng giá trị như so sánh. Đặt nó trong một thời gian vì nó không đảm bảo rằng trao đổi sẽ diễn ra. –

2

Có một lock-free thư viện đang chờ xem xét trong boost. Ngoài ra nếu bạn đào sâu vào nguồn của thư viện boost smart pointers, bạn sẽ tìm thấy các ops nguyên tử được sắp xếp cho nhiều nền tảng. Một số khác - Intel Threading Building Blocks đã triển khai mẫu atomic<>.

+0

... và trong C++ 0x. – janneb

+0

Phải ... trình biên dịch đang hoạt động nào đang nói đến? –

1

Tăng cường có a set of macros để tạo thuận lợi cho các hoạt động không có khóa theo cách di động.

Các vấn đề liên quan