用C和C ++编写线程安全的UNIX代码有哪些指导原则?
我只知道几个:
其他人在那里?
答案 0 :(得分:6)
简单的事情是阅读一点。以下列表包含一些需要研究和研究的内容。
static
变量以及任何共享的动态分配内存。pthread_cond_init
和相关功能实现的。了解基础知识后,请了解常见问题,以便在发生时识别它们
答案 1 :(得分:2)
真正归结为共享状态,全局变量和静态局部是共享状态的示例。如果您不共享状态,则不会有问题。共享状态的其他示例包括多个线程写入文件或套接字。
任何共享资源都需要正确管理 - 这可能意味着要对互斥锁进行保护,打开另一个文件或智能地序列化请求。
如果两个线程正在从同一个结构读取和写入,则需要处理该情况。
答案 2 :(得分:1)
谨防sem_t
函数,它们可能会在中断,IO,SIGCHLD等上返回未完成。如果您需要它们,请确保始终捕获该情况。
pthread_mut_t
, pthread_cond_t
和EINTR
函数是安全的。
答案 3 :(得分:0)
这里有一本关于并发性的好书,可以在这里找到:Little Book of Semaphores
它提出了逐步解决的各种问题,并包括常见并发问题的解决方案,如饥饿,竞争条件等。 它不是特定于语言的,而是包含有关使用Pthread-Library或Python在C中实现解决方案的简短章节。