Như đã nói trong các câu trả lời khác, tiền tố khóa là ẩn, ở đây, do đó, không có vấn đề gì về cấp độ trình biên dịch. Vấn đề có thể nằm trên cấp độ C (hoặc C++) khi bạn sử dụng nó như là trình biên dịch nội tuyến. Ở đây bạn phải đảm bảo rằng trình biên dịch không sắp xếp lại các hướng dẫn liên quan đến xchg
của bạn. Nếu bạn đang sử dụng gcc (hoặc anh em họ), bạn thường sẽ làm điều gì đó như:
__asm__ __volatile__("xchgl %1, %0"
: "=r"(ret)
: "m"(*point), "0"(ret)
: "memory");
đó là tuyên bố các hướng dẫn như dễ bay hơi và thêm "bộ nhớ" clobber.
Nguồn
2012-01-27 07:29:37
Nền tảng/CPU nào? –