C中的便携式线程安全?
-
10-07-2019 - |
题
<强>目的强>
我正在编写一个小型库,其中可移植性是最受关注的问题。它被设计为仅假设一个符合大多数要求的C90(ISO / IEC 9899:1990)环境......仅此而已。库提供的一组功能都在内部数据结构上运行(读/写)。我已经考虑了其他一些设计备选方案,但是对于该库来说,似乎没有其他任何可行的方法试图实现。
<强>问题强>
是否有可用于确保线程安全的便携式算法,技术或咒语?我不关心使功能重入。而且,如果算法/技术/咒语是可移植的,我不关心速度或(可能)浪费资源。理想情况下,我不想依赖任何库(如GNU Pth)或系统特定的操作(如原子测试和设置)。
我考虑修改 Lamport的面包店算法,但我不知道如何改变它在线程调用的函数内部工作,而不是在线程本身工作。
非常感谢任何帮助。
其他提示
如果没有OS /硬件支持,至少是一个原子CAS,那么你无能为力。 是可移植库,它们将各种平台抽象为一个通用接口。
这几天几乎所有系统(甚至是Windows)都可以运行libpthread。
函数要么不是线程安全的,要么天生就是线程安全的,具体取决于你想看它的方式。并且线程/锁定是天生特定于平台的。实际上,由图书馆的用户来处理线程问题。
不隶属于 StackOverflow