Синхронизация потоков, кто-нибудь может дать мне алгоритм? - PullRequest
0 голосов
/ 13 октября 2011

Моя задача - написать зашифрованную программу на языке C.

Существует исходный файл и целевой файл. Моей программе необходимо прочитать содержимое из исходного файла, зашифровать его и записать зашифрованное содержимое в целевой файл.

В моей программе 7 потоков.

Три потока читают исходный файл одну строку за одной строкой и помещают содержимое файла в общий буфер 1, поток читает содержимое из общего буфера 1,зашифровывает его и помещает в общий буфер 2, а еще три потока считывают зашифрованное содержимое из общего буфера 2 и записывают его в целевой файл.

Я думаю, что нужно создать две переменные, чтобы гарантировать, что только один поток можетчитать из исходного файла или записывать в целевой файл одновременно.Моя проблема в том, как я могу контролировать доступ несколькими потоками к общему буферу 1, общему буферу 2. Я знаю, что это похоже на проблему производителя / потребителя, но более сложную.Кто-нибудь может дать мне совет?Заранее спасибо.

1 Ответ

0 голосов
/ 13 октября 2011

У вас есть очень хороший пример с мьютексом, общей памятью и многопоточным обменом в примерах буста, здесь .

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

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