回答
简单的事情是读一点。以下列表包含一些需要查看和研究的内容。
- 花时间阅读的Open Group Base Specification特别是General Information部分和subsection on threads。这是大多数UN * X类似系统下多线程的基本信息。
- 学习difference between a mutex and a semaphore
- 要认识到,共享MUST来保护这一切。这适用于全局变量,
static
变量以及任何共享的动态分配的内存。 - 将全局状态标志替换为condition variables。这些使用
pthread_cond_init
和相关功能来实现。
一旦你了解的基础知识,了解常见的问题,这样,当它们出现,你可以识别它们:
- Lock inversion deadlocks
- Priority inversion - 如果你有兴趣在一个真实的生活场景,那么read this snippet about the Mars Pathfinder
哇,我基本上没有听说过你在这里列出的任何东西!开始阅读。 – bodacydo 2010-06-27 18:20:10
这里有很多信息。如果你想要更多的书籍,请在https://computing.llnl.gov/tutorials/pthreads/阅读或购买“UNIX系统编程”(http://www.amazon.com/UNIX-Systems-Programming) - 通信并发/ DP/0130424110 /) – 2010-06-29 02:33:32
它真的归结为共享状态,全局变量和静态本地都是共享状态的例子。如果你不分享国家,你就不会有问题。共享状态的其他示例包括写入文件或套接字的多个线程。
任何共享资源将需要妥善管理 - 这可能意味着使互斥锁受到保护,打开另一个文件或智能地序列化请求。
如果两个线程正在从同一个结构中读写,那么您需要处理这种情况。
谨防sem_t
函数,它们可能会返回未完成的中断,IO,SIGCHLD等。如果您需要它们,请务必allways捕获该情况。
pthread_mut_t
和pthread_cond_t
功能相对于EINTR
是安全的。
一个很好的关于并发性的一般书可以在这里找到:Little Book of Semaphores
它提出了一步一步解决的各种问题,包括常见并发问题的解决方案,如饥饿,竞争条件等。 它不是语言特定的,但包含有关使用Pthread-Library或Python实现C中解决方案的简短章节。
- 1. 是EventLog编写器线程安全
- 2. 如何在.NET中编写安全/正确的多线程代码?
- 3. 这个Python代码线程安全吗?
- 4. 这段代码是否线程安全?
- 5. 这段代码线程安全
- 6. 代码重入与线程安全
- 7. 这段Java代码线程安全吗?
- 8. 线程安全编程
- 9. 这种编码线程是否安全,死锁安全?
- 10. 此代码是否线程安全?我怎样才能使它线程安全?
- 11. 如何编写密码安全的类?
- 12. 编写同步线程安全的包装器的NavigableMap
- 13. 写这个是线程安全的吗?
- 14. F#事件的线程安全提升
- 15. 线程是否表示线程安全?
- 16. 这是python代码线程安全(线程与扭曲)?
- 17. 为非线程安全代码构建工作线程池
- 18. 你如何编写对UTF-8安全的代码?
- 19. 如何编写线程安全的方法?
- 20. 线程安全的
- 21. 为什么我的代码不是线程安全的?
- 22. 下面的代码是如何自动线程安全的?
- 23. 确保我的代码是线程安全的
- 24. 可能挥发可以在用户定义的类型,以帮助编写线程安全的代码
- 25. 线程安全应用程序中的线程安全
- 26. 这段代码在python 2.7中是线程安全的吗?
- 27. 我的执行代码线程安全吗?基于
- 28. 如何实现线程安全在我的代码
- 29. 这段代码是否是线程安全的C++
- 30. 不使用`synchronized`关键字的线程安全代码?
请标记投票问题的社区wiki'。 – danben 2010-06-27 14:23:18
danben,完成。 s – bodacydo 2010-06-27 14:23:47