LINUX.ORG.RU

задачка с семафорами


0

1

дали такую задачу: найти все простые натуральные числа из интервала [A,B] , двоичная запись которых является палиндромом - .Вычислить сумму найденных чисел) Программу я уже сделал, но сюда нужно пристроить семафор. Вот не знаю только куда Не подскажите куда?

Господа офицеры, молчать!

anonymous
()

Программу я уже сделал, но сюда нужно пристроить семафор.

нинужно

Семафоры используются, когда нужно синхронизировать несколько потоков, которые одновременно пытаются использовать один ресурс. У тебя там уже несколько потоков?

anonymous
()
Ответ на: комментарий от anonymous

нет один

а если сделать так, получится?: 2 процесса, в родительском

находится натуральные числа , в дочерним находится полином и

сумма этих чисел. Родительский находит первое натуральное число , передает это число через пайп дочерному процессу и семафор

останавливает процесс , пока дочерной процесс не получить число

и не определить что это палином.

Hunter_nub
() автор топика
Ответ на: комментарий от Hunter_nub

Лучше распараллель этот алгоритм. Просто раздели диапазон входных значений А..B на регионы по числу ядер в системе, на каждом ядре посчитай свою порцию данных (пареллельно), результат объедини.

yoghurt ★★★★★
()

Семафоры, как уже сказали, здесь нужны для синхронизации параллельных процессов или нитей.

Например, с их помощью можно дождаться завершения всех процессов/нитей:

1) Управляющая нить запускать N worker-нитей, в каждую нить передает семафор и поддиапазон, в котором надо искать числа.

2) Каждая worker-нить в конце своей работы складывает куда-нибудь результат и делает инкремент семафора

3) Управляющая нить делает N раз декремент семафора.

Когда управляющая нить сделает последний декремент, то гарантированно все worker-нити завершили свою работу, и у них можно забрать результат.

dmitry_vk ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.