如何设计支持多线程的库

macrojj 2009-11-24 10:15:36
之前做了一个库,该库在单线程时 很正常。现在需要扩展功能,改成多线程的。

我仅仅在库的每个函数的出口 入口 加上临界段。 现在发现这种方式不太好。 程序常常崩溃掉。

现在我想请问大家,在设计支持多线程库的时候,一般使用哪种策略。应该注意什么问题。我以为加上临界段之后,虽然会很慢,但是不至于崩溃掉。

请大家指点我一下。
...全文
110 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
willen121 2009-12-16
  • 打赏
  • 举报
回复

mutex seamphone(好象这么写吧) 都可以吧, 只要用一个内核态的东西就行了.
cattycat 2009-11-24
  • 打赏
  • 举报
回复
线程安全,即可重入的函数,尽量不要有全局变量或静态变量,如果有的话得考虑互斥。
oyljerry 2009-11-24
  • 打赏
  • 举报
回复
对于需要多个线程操作的数据也要做临界区保护等...所有可能发生读写异常的地方都要做一些保护检测
  • 打赏
  • 举报
回复
尽量减少全局变量的使用
JonathanS666 2009-11-24
  • 打赏
  • 举报
回复
对共享数据做保护。临界段并不是内核对象,用mutex或event做保护。
_JeffreyWu 2009-11-24
  • 打赏
  • 举报
回复
没写过,UP
验证码识别 2009-11-24
  • 打赏
  • 举报
回复
UP
winnuke 2009-11-24
  • 打赏
  • 举报
回复
没有涉及到全局的对象的读写的话就不需要考虑线程安全问题。
心留 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 oyljerry 的回复:]
对于需要多个线程操作的数据也要做临界区保护等...所有可能发生读写异常的地方都要做一些保护检测
[/Quote]

同意
xwsn007 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 superlym2005 的回复:]
对共享数据做保护。临界段并不是内核对象,用mutex或event做保护。
[/Quote]

同意这个说,试试互斥对象

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧