2012-08-14 35 views
0

我正在用C写一个游戏杆库,我想让它变得安全。使用pthread互斥锁可以吗?即使使用我的库的应用程序使用ACE作为线程框架(不确定ACE是否只是扩展了pthread,但让我们假设它不),它们是否还能工作?使用带有不同线程框架的pthread互斥体

同样适用于Windows:我可以使用Windows'CriticalSection与mingw + gcc中的pthread结合使用吗?或者是线程化操作系统必须做的事情,以便始终使用本地实现(Linux上的pthread和Windows上的CriticalSection)?

+0

最终,互斥功能必须由OS内核在低级别提供。 Mingw + gcc必须使用Window的本地锁定来实现pthread的互斥锁。我倾向于认为这可行。 – 2012-08-14 02:26:13

+1

@EzequielMuns Mutex不需要由操作系统提供。自旋锁完全出现在用户级别。 – chrisaycock 2012-08-14 02:28:38

回答

0

线程可以在用户级别上运行,因此无法保证OS会安排所有并发。据说,你应该总是设法让你的库线程安全,而不需要你的用户使用特定的锁定机制。

例如,您可以使所有函数“纯”或可重入。您还可以提供明确的版本,而不是线程安全的版本以及需要特定库(如pthread)的替代版本。在最极端的情况下,您可以提供无锁同步。