В pthread_create
я могу указать одно сообщение, затем во время выполнения я могу получить новые сообщения, которые необходимо передать в поток для печати.
Одним из способов может быть создание глобального вектора, ипродолжайте добавлять сообщения к нему.Поток извлечет этот вектор и просканирует его на наличие новых сообщений.
Но таким образом для n потоков необходимо будет создать n векторов!
Или одну структуру со статусом threadid, message и print.
Каковы возможные практические выходы?
РЕДАКТИРОВАТЬ 1:
Является ли следующий дизайн хорошим или нуждается в некоторых улучшениях?
Будет написан следующий кодв нормальной функции, которая будет вызываться функцией main ().
Проверьте, существует ли уже поток (отвечающий за получение этого сообщения).
- Если да, нажмите на сообщение в очереди этого потока, разбудите поток с помощью (pthread_cond_signal ()).
- Если нет, создайте поток, создайте его очередь, поместите сообщение в эту очередь.
Когда поток завершит чтение всех сообщений в своей очереди, переведите его в режим сна (pthread_cond_wait ()).