login писал(а):
Как поставить защиту на массив(или переменную), чтобы пока один поток в него пишет, второй подождал?Создать критическую секцию
login писал(а):
Два потока не могут одновременно записать в один массив, будет ошибка, а прочитать они одновременно смогут?Смогут, но при наличии кртической секции -- не смогут
Критическа секция блокирует все остальные потоки от доступа к данным, занятыми обрабатывающим потоком. У критической секции есть два режима работы -- подвесить остальные потоки до разрешения доступа, или освободить их, для выполнения ими чего-либо своего. Существует две разновидности критических секций -- локальная, работающая только в пределах главного потока одного приложения, и глобальная, работающая между потоками приложений в системе, глобальная называется Mutex. Mutex еще используют для блокирования запуска нескольких копий одного приложения.
Для ознакомления с принципами работы ПО в многопоточных системах настоятельно рекомендую почитать книгу Джеффри РИХТЕР-а "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows"
В пакете Windows есть компонент критической секции -- SafeMode/ Советую ознакомиться с кодом этого компонента и принципом построения критической секции



Поиск
Друзья
Администрация