Would anything happen that shouldn’t?
它部分取决于变量的类型.如果变量是一个字符串(长字符数组),那么如果编写者和读者同时访问它,那么读者将看到的内容完全未定义.
这就是pthreads提供互斥和其他协调机制的原因.
Does this mean that only that thread can read and write to it and no other?
互斥锁确保使用互斥锁的最多一个线程可以有权继续.使用相同互斥锁的所有其他线程将被保留,直到第一个线程释放互斥锁.因此,如果代码写得正确,任何时候,只有一个线程能够访问该变量.如果代码编写不正确,则:
>一个线程可以访问变量而不检查它是否有权这样做
>一个线程可能获取互斥锁并且永远不会释放它
>一个线程可能会破坏互斥锁而不通知另一个
这些都不是理想的行为,但仅仅存在互斥体并不能阻止任何这些行为的发生.
不过,您的代码可以合理地合理使用互斥锁,然后可以正确控制对全局变量的访问.虽然它通过互斥锁具有权限,但是任何一个线程都可以修改变量,或者只是读取变量.要么安全,不受其他线程的干扰.
总结以上是内存溢出为你收集整理的Linux上的C语言中的POSIX线程和全局变量全部内容,希望文章能够帮你解决Linux上的C语言中的POSIX线程和全局变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)