LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

Эти наборы могут быть другие и правильные - «необходимые и достаточные».

необходмый и достаточный - очередь и рекурсивный мьютекс. очередь решает проблему безопасной и эффективной передачи данных между тредами. а рекурсивный мьютекс - монопольного исполнения участка кода. они друг друга не заменяют.

нерекурсивный мьютекс - это частный случай семафора.

но и семафор можно симулировать короткой очередью, это конечно не так эффективно, как сам семафор.

ps:

ну предложи другой минимальный и ортогональный набор примитивов синхронизации. готов обсудить. но именно ортогональный и минимальный.

pss: а что касается кондвара - это примитив изобрели ТОЛЬКО ради того, чтобы правильно реализовать очередь. поскольку ТОЛЬКО эта штука дает возможность АТОМАРНО разлокнуть мьютекс и встать в ожидание. другой такой возможности нет. потому и надо сразу делать темплейт очереди и больше с кондварами не париться.

то есть кондвар сделан для того, чтобы правильно вставать в ожидание на участке с залокнутым мьютексом. если вы просто встанете в ожидание и не разлочите мьютекс - тогда больше в него никто не войдет, поскольку он залокнут.

а если вы сначала разлочите, а потом всанете в ожидание неатомарно, то между этим двумя вызовами может переключиться контекст, и другой тред войдет в охраняемый мьютексом участок и вам все испортит.

Исправление alysnix, :

Эти наборы могут быть другие и правильные - «необходимые и достаточные».

необходмый и достаточный - очередь и рекурсивный мьютекс. очередь решает проблему безопасной и эффективной передачи данных между тредами. а рекурсивный мьютекс - монопольного исполнения участка кода. они друг друга не заменяют.

нерекурсивный мьютекс - это частный случай семафора.

но и семафор можно симулировать короткой очередью, это конечно не так эффективно, как сам семафор.

ps:

ну предложи другой минимальный и ортогональный набор примитивов синхронизации. готов обсудить. но именно ортогональный и минимальный.

pss: а что касается кондвара - это примитив изобрели ТОЛЬКО ради того, чтобы правильно реализовать очередь. поскольку ТОЛЬКО эта штука дает возможность АТОМАРНО разлокнуть мьютекс и встать в ожидание. другой такой возможности нет. потому и надо сразу делать темплейт очереди и больше с кондварами не париться.

Исправление alysnix, :

Эти наборы могут быть другие и правильные - «необходимые и достаточные».

необходмый и достаточный - очередь и рекурсивный мьютекс. очередь решает проблему безопасной и эффективной передачи данных между тредами. а рекурсивный мьютекс - монопольного исполнения участка кода. они друг друга не заменяют.

нерекурсивный мьютекс - это частный случай семафора.

но и семафор можно симулировать короткой очередью, это конечно не так эффективно, как сам семафор.

ps:

ну предложи другой минимальный и ортогональный набор примитивов синхронизации. готов обсудить. но именно ортогональный и минимальный.

Исправление alysnix, :

Эти наборы могут быть другие и правильные - «необходимые и достаточные».

необходмый и достаточный - очередь и рекурсивный мьютекс. очередь решает проблему безопасной и эффективной передачи данных между тредами. а рекурсивный мьютекс - монопольного исполнения участка кода. они друг друга не заменяют.

нерекурсивный мьютекс - это частный случай семафора.

но и семафор можно симулировать короткой очередью, это конечно не так эффективно, как сам семафор.

ps ну предложи другой минимальный и ортогональный набор примитивов синхронизации. готов обсудить. но именно ортогональный и минимальный.

Исходная версия alysnix, :

Эти наборы могут быть другие и правильные - «необходимые и достаточные».

необходмый и достаточный - очередь и рекурсивный мьютекс. очередь решает проблему безопасной и эффективной передачи данных между тредами. а рекурсивный мьютекс - монопольного исполнения участка кода. они друг друга не заменяют.

нерекурсивный мьютекс - это частный случай семафора.

но и семафор можно симулировать короткой очередью, это конечно не так эффективно, как сам семафор.