Здравствуйте, barney, Вы писали:
B>Вообще бы, хотелось программировать в какой то иной парадигме,
B>без критических секций и мьютексов.
Всё зависит от задач.
Я обычно мьютексы не использую, так как это "тяжёлые" системные объекты.
Насчет критических секций — не вижу ничего предосудительного в их применении.
Часто я аккуратно пользуюсь ими. Здесь важно — НЕ вводить в облась, защищенную секцией много кода:
::EnterCriticalSection(m_pCS);
// Самые элементарные действия с общими ресурсами
::LeaveCriticalSection(m_pCS);
B>Мне нравится идея максимально заполнять ядра процессора работой,
B>с помощью work queue или thread pool
Как я понимаю, это примерно так:
https://stackoverflow.com/questions/3458397/boostthread-and-creating-a-pool-of-them
Заполнять ядра CPU работой — это палка о двух концах:
При работе таких приложений, компьютер очень медленно реагирует на действия пользователя.
Правильнее — где-то в циклах рабочих потоков вводить ::Sleep(100...500);
— чтобы отдать управление системе (исключить жуткие тормоза для end-user-а).