170 похожих чатов

Всем привет Есть некоторый пул потоков, реализованный на основе вектора из

thread
Есть некоторая очередь с задачами
Взаимодействие между ними налажено, всё более-менее работает
На текущий момент поток ждёт notify_one, после чего хватает очередь, блокирует её, берёт задачу и разблокирует для дальшейших потоков, которые так же в состоянии ожидания

Стоит задача: Нужно модернизировать систему так, чтобы число потоков было ограниченным (допустим, сделаю 4 потока, по ядру на каждый) и сделать балансировку задач, которые лежат в очереди, между потоками

Мысли:
Разделить количество задач между потоками (допустим, есть 12 задач, на каждый поток будет отводится по 3, соответственно).
Для этого нужно либо завести на каждый поток свою очередь, куда закинуть задачи только для данного потока, либо как-то ещё. Отчего-то эта идея кажется плохой, но в голову другой не идёт.
Помогите, пожалуйста, как это лучше спланировать.

Вопрос:
Как лучше поступить?

1 ответов

9 просмотров

https://github.com/cameron314/concurrentqueue

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Нужен пулл реквест с хаммингберд + асинкхттпклиент или хаммингберд + юрлсессия?
Karl {🌪️}{🐊} Shinobi
7
Всем привет. Поделитесь, пожалуйста, опытом. Есть форма, на которой имеется dbgrid и кнопки: добавить, редактировать, удалить. Если нет записей в dbgrid, то кнопки редактирова...
Евгений
5
может там как раз сжатие?
Дмитрий
7
Как структуру (из MSVC) в которой описаны битовые поля описать для fasm? Вот например это (fBinary...fDummy2 - это физически 1 DWORD): typedef struct _DCB { DWORD DCBlength;...
Евгений
3
type TExtensions<GExtender>=class function GetExtension<GEntityExtenderType>:GEntityExtenderType; end; function TExtensions<GExtender>.GetExtension<GEntityExtenderType...
zamtmn
9
Карта сайта