การใช้งาน glibc ของฟังก์ชัน pthread_spin_lock() และ pthread_spin_unlock() มีคำแนะนำเกี่ยวกับรั้วหน่วยความจำหรือไม่ (ฉันไม่พบคำแนะนำเกี่ยวกับรั้วใด ๆ )
คำถามที่คล้ายกันมีคำตอบที่นี่ pthread_mutex_lock มีคำสั่งรั้วหน่วยความจำหรือไม่
การใช้งาน glibc ของฟังก์ชัน pthread_spin_lock() และ pthread_spin_unlock() มีคำแนะนำเกี่ยวกับรั้วหน่วยความจำหรือไม่ (ฉันไม่พบคำแนะนำเกี่ยวกับรั้วใด ๆ )
คำถามที่คล้ายกันมีคำตอบที่นี่ pthread_mutex_lock มีคำสั่งรั้วหน่วยความจำหรือไม่
การใช้งาน glibc ของฟังก์ชัน pthread_spin_lock() และ pthread_spin_unlock() มีคำแนะนำเกี่ยวกับรั้วหน่วยความจำหรือไม่
ไม่มีการใช้งาน -- มีการใช้งาน สำหรับโปรเซสเซอร์แต่ละตัวที่รองรับ
การใช้งาน x86_64
ไม่ได้ใช้รั้วหน่วยความจำ ใช้คำนำหน้า lock
แทน:
gdb -q /lib/x86_64-linux-gnu/libpthread.so.0
(gdb) disas pthread_spin_lock
Dump of assembler code for function pthread_spin_lock:
0x00000000000108c0 <+0>: lock decl (%rdi)
0x00000000000108c3 <+3>: jne 0x108d0 <pthread_spin_lock+16>
0x00000000000108c5 <+5>: xor %eax,%eax
0x00000000000108c7 <+7>: retq
0x00000000000108c8 <+8>: nopl 0x0(%rax,%rax,1)
0x00000000000108d0 <+16>: pause
0x00000000000108d2 <+18>: cmpl $0x0,(%rdi)
0x00000000000108d5 <+21>: jg 0x108c0 <pthread_spin_lock>
0x00000000000108d7 <+23>: jmp 0x108d0 <pthread_spin_lock+16>
เนื่องจากคำสั่งที่นำหน้าด้วย lock
เป็นตัวกั้นหน่วยความจำบน x86_64
(และ i386
) อยู่แล้ว จึงไม่จำเป็นต้องมีตัวกั้นหน่วยความจำเพิ่มเติม
แต่การใช้งาน powerpc ใช้ lwarx
และ stwcx
คำแนะนำ ซึ่งใกล้เคียงกว่า ไปยังรั้วหน่วยความจำและการใช้งาน sparc64 ใช้คำสั่ง membar
(อุปสรรคหน่วยความจำ) แบบเต็ม
คุณสามารถดูการใช้งานต่างๆ ได้ในไฟล์ sysdeps/.../pthread_spin_lock.*
ในแหล่งที่มาของ GLIBC