我有从文件描述符读取的代码read
from 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 读取的线程运行此代码时,我没有问题,但多个线程会导致退出行为。