Использование WinApi для создания пула потоков
Добавлено: 30.03.2018 05:53:40
Приветствую Вас, приветствуйте новичка.
Вопрос в следующем, как всегда есть задание - что то там сделать (суть не важна)
Как?
мы с преподавателем осилили.
Весь парадокс ситуации, что конечно сделать это предлагается на С/С++, однако меня забыли предварительно обучить этим языкам. Преподаватель был вынужден согласиться, что изучать язык, для выполнения лабораторной работы, прямо не связанной с программированием (Теория вычислительных процессов) - не комильфо.
.NET в FreePascal недоступна. Изучать PascalABC.Net я также отказался.
Так есть у кого то опыт организации такого пула? Может есть желание мозг поднапречь? Моя беда, то, что я не знаю языки. От англ до С. И не могу пользоваться примерами написанными на С.
Вот что есть в УМП
Если есть что то полезное в этом обрывке, могу привести и эти пп.
Вопрос в следующем, как всегда есть задание - что то там сделать (суть не важна)
При помощи пула из M потоков (M ≤ N), используя системный пул потоков или асинхронные потоки ввода/вывода.
Как?
При помощи массива из M потоков (M ≤ N), используя для синхронизации объект ядра — семафор.
мы с преподавателем осилили.
Весь парадокс ситуации, что конечно сделать это предлагается на С/С++, однако меня забыли предварительно обучить этим языкам. Преподаватель был вынужден согласиться, что изучать язык, для выполнения лабораторной работы, прямо не связанной с программированием (Теория вычислительных процессов) - не комильфо.
.NET в FreePascal недоступна. Изучать PascalABC.Net я также отказался.
Так есть у кого то опыт организации такого пула? Может есть желание мозг поднапречь? Моя беда, то, что я не знаю языки. От англ до С. И не могу пользоваться примерами написанными на С.
Вот что есть в УМП
В API Windows пула потоков, как такового, нет. Для создания пула рабочих потоков можно вручную создавать массив потоков вызовом функции CreateThread, а затем ожидать окончания их выполнения вызовом функции WaitForMultipleObjects(Ex) или MsgWaitForMultipleObjects(Ex). Для создания очереди асинхронных операций используется функция QueueUserAPC. В качестве сигнальных объектов могут выступать как сами процессы и потоки, так и семафоры, мьютексы, таймеры и события (табл. 3.5, п. 3.2.3). Также для организации пула потоков можно использовать порты завершения ввода/вывода (п. 3.2.3.5).
Если есть что то полезное в этом обрывке, могу привести и эти пп.