.so中函数重入的问题
一个动态库中有函数分别存取动态库的全局变量static int a和int b,当其他程序调用这个库的函数存取a,b时:
调用a的函数是不可重入?b的可以?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
一个动态库中有函数分别存取动态库的全局变量static int a和int b,当其他程序调用这个库的函数存取a,b时:
调用a的函数是不可重入?b的可以?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
恩,确实确实,多谢指教!
谢谢,受益匪浅。
自己想写一个库,里面包含打开设备文件的初始化函数。不知道把这些函数放在动态库中,多个程序调用时,会不会争夺设备。
说的有理。
我觉得您老还是把动态链接库的概念给搞错了,动态链接库,其实是相对于静态链接库而言的,它和静态库的区别是,在系统中只有一份代码段被所有程序共享,它的全局变量以及其它的数据并不是被所有程序共享的,还是每个程序单独拥有的。
只有当某个程序中多个线程同时访问该全局变量,才可能产生竞争。而且一般而言动态库是不可能让你直接访问某个变量的,它肯定有它的操作接口。如果没有,那么只能说这个库的实现者太××了。
应该都不可重入。
这两个变量的生存周期都是一样的。