История изменений
Исправление alysnix, (текущая версия) :
Эти наборы могут быть другие и правильные - «необходимые и достаточные».
необходмый и достаточный - очередь и рекурсивный мьютекс. очередь решает проблему безопасной и эффективной передачи данных между тредами. а рекурсивный мьютекс - монопольного исполнения участка кода. они друг друга не заменяют.
нерекурсивный мьютекс - это частный случай семафора.
но и семафор можно симулировать короткой очередью, это конечно не так эффективно, как сам семафор.
ps:
ну предложи другой минимальный и ортогональный набор примитивов синхронизации. готов обсудить. но именно ортогональный и минимальный.
pss: а что касается кондвара - это примитив изобрели ТОЛЬКО ради того, чтобы правильно реализовать очередь. поскольку ТОЛЬКО эта штука дает возможность АТОМАРНО разлокнуть мьютекс и встать в ожидание. другой такой возможности нет. потому и надо сразу делать темплейт очереди и больше с кондварами не париться.
то есть кондвар сделан для того, чтобы правильно вставать в ожидание на участке с залокнутым мьютексом. если вы просто встанете в ожидание и не разлочите мьютекс - тогда больше в него никто не войдет, поскольку он залокнут.
а если вы сначала разлочите, а потом всанете в ожидание неатомарно, то между этим двумя вызовами может переключиться контекст, и другой тред войдет в охраняемый мьютексом участок и вам все испортит.
Исправление alysnix, :
Эти наборы могут быть другие и правильные - «необходимые и достаточные».
необходмый и достаточный - очередь и рекурсивный мьютекс. очередь решает проблему безопасной и эффективной передачи данных между тредами. а рекурсивный мьютекс - монопольного исполнения участка кода. они друг друга не заменяют.
нерекурсивный мьютекс - это частный случай семафора.
но и семафор можно симулировать короткой очередью, это конечно не так эффективно, как сам семафор.
ps:
ну предложи другой минимальный и ортогональный набор примитивов синхронизации. готов обсудить. но именно ортогональный и минимальный.
pss: а что касается кондвара - это примитив изобрели ТОЛЬКО ради того, чтобы правильно реализовать очередь. поскольку ТОЛЬКО эта штука дает возможность АТОМАРНО разлокнуть мьютекс и встать в ожидание. другой такой возможности нет. потому и надо сразу делать темплейт очереди и больше с кондварами не париться.
Исправление alysnix, :
Эти наборы могут быть другие и правильные - «необходимые и достаточные».
необходмый и достаточный - очередь и рекурсивный мьютекс. очередь решает проблему безопасной и эффективной передачи данных между тредами. а рекурсивный мьютекс - монопольного исполнения участка кода. они друг друга не заменяют.
нерекурсивный мьютекс - это частный случай семафора.
но и семафор можно симулировать короткой очередью, это конечно не так эффективно, как сам семафор.
ps:
ну предложи другой минимальный и ортогональный набор примитивов синхронизации. готов обсудить. но именно ортогональный и минимальный.
Исправление alysnix, :
Эти наборы могут быть другие и правильные - «необходимые и достаточные».
необходмый и достаточный - очередь и рекурсивный мьютекс. очередь решает проблему безопасной и эффективной передачи данных между тредами. а рекурсивный мьютекс - монопольного исполнения участка кода. они друг друга не заменяют.
нерекурсивный мьютекс - это частный случай семафора.
но и семафор можно симулировать короткой очередью, это конечно не так эффективно, как сам семафор.
ps ну предложи другой минимальный и ортогональный набор примитивов синхронизации. готов обсудить. но именно ортогональный и минимальный.
Исходная версия alysnix, :
Эти наборы могут быть другие и правильные - «необходимые и достаточные».
необходмый и достаточный - очередь и рекурсивный мьютекс. очередь решает проблему безопасной и эффективной передачи данных между тредами. а рекурсивный мьютекс - монопольного исполнения участка кода. они друг друга не заменяют.
нерекурсивный мьютекс - это частный случай семафора.
но и семафор можно симулировать короткой очередью, это конечно не так эффективно, как сам семафор.