У меня есть класс C ++ со многими экземплярами, и я хочу, чтобы мой поток приложений был безопасным.
Этот класс имеет член и функцию, которая его обрабатывает, например:
class MyCls {
int x;
void f() { x++; }
};
Мне нужно защитить этого участника, поэтому, насколько я вижу, у меня есть 2 варианта:
- Добавить глобальный критический раздел и
введите его, прежде чем прикасаться к этому участнику.
- Добавить критический раздел в класс
поэтому каждый экземпляр будет защищать своего члена.
Оба решения являются огромным перегибом:
- Два разных экземпляра вообще не должны синхронизироваться.
- Операционная система должна обрабатывать миллионы критических секций, где на самом деле очень мало коллизий.
Можно ли использовать другое решение или шаблоны многопоточного дизайна?