假设我有两个线程:A,B。线程 A 正在运行一些指令,这些指令同时位于加载的共享库中,线程 Bdlclose()
是共享库。会发生什么?
问问题
65 次
1 回答
0
在同一个进程中,两个线程在调用dlopen()后共享同一个句柄,如果一个线程使用dlclose(handle)关闭打开的库,则使用该句柄的另一个线程(实际上是两者中的任何一个)会导致未定义的行为(通常是Segmentation fault)。
更具体地说,来自dlclose 手册页
dlclose()
函数 dlclose() 减少动态库句柄句柄上的引用计数。如果引用计数降至零并且没有其他加载的库在其中使用符号,则卸载动态库。
于 2013-05-31T03:15:29.537 回答