1
假设我有两个线程:A,B。线程A正在运行一些指令,它们同时位于一个加载的共享库中,线程B dlclose()
共享库。 会发生什么?如果我引用由dlclose卸载的指令,会发生什么情况?
假设我有两个线程:A,B。线程A正在运行一些指令,它们同时位于一个加载的共享库中,线程B dlclose()
共享库。 会发生什么?如果我引用由dlclose卸载的指令,会发生什么情况?
在同一过程中,两个线程共享相同手柄以下调用dlopen()的,如果一个线程关闭打开的库dlclose(手柄),其他线程(实际上,任何的两者)使用句柄会导致未定义的行为(通常,分段错误)。
更具体地,从dlclose man page
dlclose()
函数dlclose()递减的动态库句柄句柄引用计数。如果引用计数下降到零,并且没有其他加载的库使用它中的符号,则动态库将被卸载。