环境:C++,VS 2008,MFC,Windows XP 应用程序。我必须在 2 个线程中访问和修改树结构。我的想法是使用 CCriticalSection 保护每个节点,每次访问节点内部数据(不是子节点)时都会锁定该节点。我期待大量节点(2-300000)。
大量的临界区会成为问题吗?
我听说 Windows 有大量打开句柄的问题,这就是我问这个的原因。
环境:C++,VS 2008,MFC,Windows XP 应用程序。我必须在 2 个线程中访问和修改树结构。我的想法是使用 CCriticalSection 保护每个节点,每次访问节点内部数据(不是子节点)时都会锁定该节点。我期待大量节点(2-300000)。
大量的临界区会成为问题吗?
我听说 Windows 有大量打开句柄的问题,这就是我问这个的原因。
与互斥锁不同,临界区不是内核对象,只有在两个线程实际尝试锁定它时才需要操作系统句柄。如果您想知道它是如何工作的,请阅读这篇 Matt Pietrek 文章。