Нужны ли тут кртические секции?
От: CFA Россия  
Дата: 27.10.11 09:57
Оценка:
Есть многопоточное приложение. Под windows на delphi, но думаю это не важно.
Есть ряд глобальных переменных которые могут читать/менять вспомогательные потоки, основной поток их только читает.
Со сложными переменными вроде массивов, записей, объектов все понятно, и критические секции решительно нужны.
А переменные простых типов — Integer/Word/Byte/etc — нужно ли оборачивать их чтение во вход/выход из КС?
С одной стороны логика подсказывает, что чтение и запись должны быть атомарны, тк это одна инструкция CPU, но в современных реалиях, у почти любого процессора есть несколько ядер, не случится ли ситуация когда 2 потока пишут в одну переменную практически одновременно, и в переменной будут записаны старшие байты из одного потока, а младшие из другого?
С точки зрения приложения совсем не важно, какой именно поток запишет данные, важно чтоб они были целостными.
Я пишу — по ночам больше тем.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.