1

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

4

0 回答 0