#промышленная_разработка Представьте, что вам нужно сложить два числа....

#промышленная_разработка

Представьте, что вам нужно сложить два числа. У вас есть функция, которая складывает два числа. А где-то далеко в документации написано, что в целях производительности эта функция в редких случаях возвращает неправильный результат. А если результат неправильный, надо снова вызвать функцию. И вы должны снова и снова вызывать функцию, пока она не отработает корректно. "Бред!" - скажете вы?

На самом деле, нет. Это немного утрированный случай condition_variable. Метод wait должен ожидать определённого события. Так вот, иногда метод wait может самопроизвольно заканчиваться, даже если событие не произошло. И ваша ответственность - вызывать метод wait до тех пор, пока это событие не произойдёт!!

This behavior is by design :)

Пруф на документацию:
http://en.cppreference.com/w/cpp/thread/condition_variable
https://en.wikipedia.org/wiki/Spurious_wakeup

Эта история в моём личном списке сумаcшествий промышленной разработки занимает почётное второе место после: "если не получилось открыть файл - попробуйте ещё 5 раз. Behavior by design."
#industrial development

Imagine you need to add two numbers. You have a function that adds two numbers. And somewhere far away in the documentation it is written that for performance purposes this function in rare cases returns an incorrect result. And if the result is incorrect, you must call the function again. And you must call the function again and again until it works correctly. "Rave!" - you say?

Not really. This is a slightly exaggerated case of condition_variable. The wait method must wait for a specific event. So, sometimes the wait method can end spontaneously, even if the event did not happen. And your responsibility is to call the wait method until this event happens !!

This behavior is by design :)

Documentation proof:
http://en.cppreference.com/w/cpp/thread/condition_variable
https://en.wikipedia.org/wiki/Spurious_wakeup

This story, in my personal list of industrial development benefits, takes an honorable second place after: "if you couldn’t open the file, try another 5 times. Behavior by design."
У записи 4 лайков,
0 репостов.
Эту запись оставил(а) на своей стене Иван Афанасьев

Понравилось следующим людям