LINUX.ORG.RU

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

Исправление no-such-file, (текущая версия) :

И они оба хотят работать с id=123. Возникает ровто таже проблема, что я описал выше.

Вроде бы не возникает, или я вас неправильно понял. В моём примере make и release могут вызываться только синхронно, т.е. из одного треда, последовательно.

Представьте, что два треда (один делает make, второй release) делают

MakeReleaseLock mr(repo.getMakeReleaseLock());

Один из них получит объект для работы, а второй тред залочится. Соответственно пока первый тред не отработает, из второго треда release вызвать нельзя, вмешаться в работу make нельзя. Значит make может сделать все, что положено, вернуть правильный указатель и т.д.

Исходная версия no-such-file, :

И они оба хотят работать с id=123. Возникает ровто таже проблема, что я описал выше.

Вроде бы не возникает, или я вас неправильно понял. В моём примере make и release могут вызываться только синхронно, т.е. из одного треда.

Представьте, что два треда (один делает make, второй release) делают

MakeReleaseLock mr(repo.getMakeReleaseLock());

Один из них получит объект для работы, а второй тред залочится. Соответственно пока первый тред не отработает, из второго треда release вызвать нельзя, вмешаться в работу make нельзя. Значит make может сделать все, что положено, вернуть правильный указатель и т.д.