|
Атомарный доступ к разделяемому ресурсу
|
|||
---|---|---|---|
#18+
Здравстуйте, уважаемые форумчане. Такой вопрос назрел. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Гарантирует ли такой код атомарность записи(чтения) в(из) переменную(ой) var_global значения из двух разных потоков? Т.е. не возможна ли такая ситуация, что к примеру первый поток успеет записать только целую часть в глобальную переменную var_global, затем планировщик потоков переключит контекст на выполнение второго потока и в итоге в базу запишется значение var_global, в котором в дробной части будет содержаться предыдущее значение переменной, до её изменения первым потоком? В основном в литературе были примеры, когда осуществлялась блокировка ресурса в одном методе, к которому обращались разные потоки. А вот как будет, если эти потоки будут обращаться к общему ресурсу через разные методы? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2014, 09:57 |
|
Атомарный доступ к разделяемому ресурсу
|
|||
---|---|---|---|
#18+
Гарантирует, да, если locker - один и тот же объект и там, и там. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2014, 10:34 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1403123]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 321ms |
total: | 472ms |
0 / 0 |