毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> linux >> 正文

thread_unlock与thread_waitlock_这些函数怎么来的

更新时间:2013-1-7:  来源:毕业论文

thread_unlock与thread_waitlock_这些函数怎么来的
在AIX上,运行一个多线程程序,然后用truss跟踪,发现有thread_unlock与thread_waitlock_函数,但是使用nm test(程序名)|grep thread_unlock 没有发现该函数,检查相应的加载的动态库中也没有thread_unlock函数,这让我感到很困惑,thread_unlock与thread_waitlock_这些函数从何而来?难道是系统自动添加上的thread_unlock加锁操作?
(ps:makefile没有使用-D_THREAD_SAFE与-lpthread
这是truss的部分记录:
0.0008:        thread_waitlock_(0x3000A6C0, 1, 0x00000000) = 1
0.0002:        thread_unlock(0x3000A6C0)        = 1
0.0001:        thread_unlock(0x3000A6C0)        = 0
0.0002:        thread_waitlock_(0x3000A6C0, 1, 0x00000000) = 1
                                                = 0
0.0001:        thread_waitlock_(0x3000A6C0, 1, 0x00000000) = 1
                                                = 1
0.0005:        thread_unlock(0x3000A6C0)        = 0
这两个函数估计不是应用程序自己直接调用的
很可能是某个系统调用,像进程间同步机制(信号灯啥的)间接调用的

如果多线程情况下存在锁等待,某种程度是不如单线程执行效率高的。

将程序改为多进程模式,性能大大的提高(4个cpu),按常理在多处理器上多线程与多进程处理性能应该差不多的,分析原因应该是由线程锁导致性能降低,但是不知道线程锁从何而来?源码中不存在线程锁操作,而truss下,发现系统调用了thread_unlock与thread_waitlock_函数,这些函数应该是线程锁操作函数吧?是不是运行时,系统为多线程自动添加的锁操作?

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。