поведение чтения из 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, у меня нет проблем, но несколько потоков вызывают выходное поведение.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]