Я пробовал использовать условные переменные (и мьютекс, который должен с ними работать), но в итоге вместо ускорения код замедлился; в основном это произошло потому, что вызовы всех необходимых функций очень дороги (
Код: Выделить всё
pthread_cond_wait/pthread_cond_signal/pthread_mutex_lock/pthread_mutex_unlockНет смысла использовать пул потоков (которого у меня тоже нет), поскольку это слишком общая конструкция; здесь я хочу решить только свою конкретную задачу. В зависимости от реализации я бы также заплатил штраф за производительность очереди.
Есть ли у вас предложения по быстрому пробуждению без использования мьютекса или con_var?
Я думал о потоках настройки, таких как таймеры, читающие атомарную переменную; если для переменной установлено значение 1, работу выполнят потоки; если для него установлено значение 0, они перейдут в спящий режим на несколько микросекунд (я бы начал с микросекундного сна, так как хотел бы избежать использования спин-блокировок, которые могут быть слишком дорогими для процессора). Что вы об этом думаете? Любое предложение очень ценится.
Я использую Linux, gcc, C и C++.
Подробнее здесь: https://stackoverflow.com/questions/559 ... n-variable
Мобильная версия