目的
我正在编写一个小型库,其可移植性是最关心的问题。它被设计成只假设一个最符合 C90 (ISO/IEC 9899:1990) 的环境......仅此而已。该库提供的一组函数都对内部数据结构进行操作(读/写)。我已经考虑了其他一些设计替代方案,但对于图书馆试图实现的目标似乎没有其他可行的方法。
问题
是否有任何可移植的算法、技术或咒语可用于确保线程安全?我不关心使功能可重入。此外,如果算法/技术/咒语是可移植的,我不关心速度或(可能)浪费资源。理想情况下,我不想依赖任何库(例如 GNU Pth)或特定于系统的操作(例如原子测试和设置)。
我考虑过修改Lamport's bakery algorithm,但我不知道如何将其更改为在线程调用的函数内部工作,而不是在线程本身中工作。
任何帮助是极大的赞赏。