C - Лучшая практика общения между потоками, поддерживающая как пут, так и гет - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь провести эксперимент, в котором данные и работа распределяются по ядрам процессора на конкретной машине. Это делается путем настройки сродства процессора и закрепления одного потока на каждом ядре. Данные, хранящиеся в потоке, генерируются в потоке в попытке сохранить данные как можно ближе к потоку (в пределах основного кэша). Данные имеют разные типы, и каждый поток хранит разные типы данных. Теперь основной поток должен иметь возможность помещать и получать данные в каждый контейнер данных в каждом потоке, но здесь я не уверен, к чему стремиться.

Эксперимент реализован в кл.

Если предположить, что параллельные запросы на размещение и получение к различным потокам лучше всего подойдут для связи между потоками ? Идея состоит в том, чтобы я хотел как можно меньше перемещать данные между ядрами, поэтому я стараюсь избегать использования общих коммуникационных буферов / мьютексов. Первоначально я стремился использовать сокеты в каждом потоке, но это слишком сложная работа, поскольку на самом деле это не цель эксперимента. Прямо сейчас я рассматриваю использование некоторых типов очередей, и я предполагаю, что мне нужно было бы реализовать некоторые входные и выходные очереди для обработки как пут, так и получений. Поэтому я пришел сюда, чтобы, надеюсь, получить некоторые указания и советы.

Заранее спасибо!

...