原帖由 killuazaoldyeck 於 2008-11-15 01:06 發表


目標還是Win32,所以暫時不考慮portability。

看過關於OOP with Thread-safety的文章不多,Google好多次都無想知的部分。

Synchronization API / CRT擴充的這些Function,使用在Class/Template的methods中,或Thr ...


1、我觉得Windows platfom上高效的线程同步实现都是基于Win32同步API的,即使是可以可移植的代码(例如boost)也是通过条件编译使用了Win32的API。

2、Critical Section只能用在single-process synchronization,如果需要multi-process synchronization,就需要使用Mutex或者Event,主要涉及到的Win32 API有CreateMutex,WaitForSingleObject。具体如何使用请参考MSDN。

3、多线程的程序,首先要保证运行正确,其次才能求效能。 多线程程序设计的效能问题注意点有很多,最主要的就是协调各线程的运行, 一个线程执行完读写受保护数据的代码后需要立刻释放其占用的锁(即锁定区域要尽可能的小), 这样其它的线程就不需要等待太长时间。 Critical section只能用在single-process synchronization,执行效率相对于Mutex要高。

4、copy-on-write 不知道你说的应用场景如何。 一般是数据被多个线程共享,这些线程大部分情况下不修改该数据,一个线程需要修改该数据时,就将该数据copy一份作为修改线程的私有数据,所做的修改不影响公共数据,不会影响到其他的线程。 实现到底困难与否, 与使用的场景有关系。

TOP