爲什麼glibc和pthread庫都定義了相同的API?這裏是快照爲什麼glibc和pthread庫都定義了相同的API?
[email protected]:/lib$ objdump -T /lib/i386-linux-gnu/libc.so.6 |grep pthread_cond_signal
000f8360 g DF .text 00000039 GLIBC_2.3.2 pthread_cond_signal
0012b940 g DF .text 00000039 (GLIBC_2.0) pthread_cond_signal
[email protected]:/lib$ objdump -T /lib/i386-linux-gnu/libpthread.so.0 |grep pthread_cond_signal
0000b350 g DF .text 0000007c (GLIBC_2.0) pthread_cond_signal
0000af90 g DF .text 000000fc GLIBC_2.3.2 pthread_cond_signal
你說得對,pthread_create沒有在libc.so.6中定義。但是,爲什麼我們不會在鏈接時獲得pthread_cond_signal的多個定義錯誤? –
答案更新,以描述_symbol interposition_ –
我不相信這個答案是完全正確的。 glibc中的定義只是佔位符,並且對於pthread操作只有空的無作用定義。 libpthread.so中的定義覆蓋這些。這適用於想要在多線程程序中以單線程但線程安全的速度運行的庫。 –