Темы и очереди - PullRequest
       2

Темы и очереди

1 голос
/ 04 апреля 2019

Я бы хотел ускорить сортировку, внедрив потоки для параллельной работы.Мои базовые знания о pthreads: создание, объединение и использование мьютексов для предотвращения тупиковой ситуации.

Итак, мои вопросы таковы: как назначить задачу потоку после его завершения?Например, если бы я должен был отдать половину списка потоку 1 для сортировки, а другой - задаче 2, чтобы отсортировать, как только задача 1 завершится, она должна перейти к задаче 2 и помочь ей.

Если этопомогает, я тестирую с быстрой сортировкой.

Я пытался увидеть, есть ли функция назначения задач, но те, на которые я наткнулся, находятся в разных кодах.

1 Ответ

0 голосов
/ 04 апреля 2019

В этом нет ничего особенно сложного.

Во-первых, вам нужна очередь ожидания. То есть список вещей, поддерживаемый для того, чтобы поток мог ждать, если очередь пуста.

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

Вот пример примера кода , который я написал. Это на C ++, но общая идея должна быть очевидна при взгляде на код.

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