Многопоточность - синхронизация в Unix - PullRequest
0 голосов
/ 31 июля 2009

Я сталкиваюсь с проблемой синхронизации в многопоточности. У меня есть общая библиотека, которую приложения используют для создания там приложений. Из библиотеки Я создал поток, который прослушивает поступающий запрос и обрабатывает его в режиме реального времени. Из библиотеки я вызвал API, который по своей природе синхронизирован и будет ожидать ответа от другого модуля. Этот API имеет некоторую зависимость от другого модуля, от которого ответ должен прийти после 1-го ответа. Но иногда 2-й ответ приходит 1-м, поэтому API выходит из строя, а иногда работает нормально. мьютекс блокирует арпит уже применен. Может кто-нибудь сказать мне, какой должен быть подход, чтобы решить проблему ?? Я надеюсь, что мой вопрос ясен.

РЕДАКТИРОВАТЬ: его на C + Unix

1 Ответ

1 голос
/ 17 сентября 2009

Это поможет улучшить ваш вопрос с помощью диаграммы временной последовательности.

В любом случае, после вашего описания проблема может быть в: - некоторая библиотека не предназначена для многопоточного использования - не все операции блокируются мьютексом (хорошее объяснение мьютекса можно найти здесь ) - приоритеты потока / процесса - смешанные API синхронизации / асинхронности (то есть один параметр возвращается событием, а другой задается с помощью вызова функции)

Если ваша единственная проблема - это порядок, вы также можете попробовать улучшить свой API, например, используя порядковый номер или временную метку. Таким образом, ваш код может найти самое раннее событие.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...