从unistd.h读取的行为

时间:2013-10-10 17:54:42

标签: c++ multithreading unistd.h

我的代码从read unistd.h的文件描述符中读取。我遇到奇怪的行为,遇到read的线程退出,我在文档中找不到任何可以解释这一点的内容。

有谁知道为什么会这样?

我不确定发布代码是否有帮助,有很多不相关的代码片段,但这里是一个精简版:

我初始化文件描述符:

m_serialFD是类型int的成员,这发生在构造函数中)

m_serialFD = open("/dev/ttymxc0", O_RDWR | O_NOCTTY);
// flag setting code here....

稍后在构造函数中,我初始化一个互斥成员变量:

pthread_mutex_init (&m_serialMutex, NULL);

稍后在成员函数中:

message只是一个chars nBytes长的数组

pthread_mutex_lock (&m_serialMutex);
// write some stuff then get the response
read (m_serialFD, message, nBytes);
pthread_mutex_unlock (&m_serialMutex);

我在读取调用周围锁定了一个互斥锁,因为我有多个成员函数进行读写操作,我不希望响应混淆。我注意到的一件事是,当我只用一个读取m_serialFD的线程来运行这个代码时,我没有问题,但多个线程会导致退出行为。

0 个答案:

没有答案