Re[38]: Безопасность Rust
От: · Великобритания  
Дата: 04.06.19 13:19
Оценка:
Здравствуйте, vdimas, Вы писали:

V>·>И уж тем более это никак не доказывает, что volatile sig_atomic можно использовать в многопоточке. Доказательством будет фраза в стандарте. А стандарт наоборот это явно запрещает.

V>Стандарт не так говорит.
Вот же:

A program that has two conflicting evaluations has a data race unless

* both evaluations execute on the same thread or in the same signal handler, or
* both conflicting evaluations are atomic operations (see std::atomic), or
* one of the conflicting evaluations happens-before another (see std::memory_order)

If a data race occurs, the behavior of the program is undefined.

Ни sig_atomic, ни volatile не подходят ни под один из указанных пунктов. Следовательно это data race. А значит поведение неопределено.
Оно не то что "запрещает", и таки да, использвать можно, но это будет undefined behaviour. Если тебе хочется писать код, который ведёт себя непредсказуемым образом, то кто ж тебе запретит...
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.