正确答案是 不要自己实现 。
从C++11开始,STL已经提供了multithreading相关的设施,包括锁这种基本的同步设施;如果很不幸的,你的生产环境被三体人锁在了C++98/03,那么你可以考虑使用boost。这个看起来乱糟糟的准标准库也提供了相关的同步设施,而且用起来的体验还和C++11的标准库非常相像。
当然,如果文章到这里就结束的话,不免有些标题党之嫌。所以,我们还是要讨论一下正题:如果你不能使用新标准,并且不想背上boost这样一个大包袱(例如一个写给自己的小工具),那么考虑自己实现一个锁也在情理之中。
然而在动手之前,有几个问题一定要想清楚,否则免不了蛋疼菊紧。
Point 0: 选好巨人的脑袋
锁作为基本的同步设施,除非你要自己写一个操作系统,否则是没有可能让你从无到有撸一个出来的。
所以首先要做的是确定你要踩在谁的脑袋上:在Windows上,你需要的是CRITICAL_SECTION
以及相关的API;在Linxu上&