198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||
1 | ||||||
Многопоточность - синхронизация - lock02.10.2013, 12:52. Показов 2049. Ответов 3
Метки нет (Все метки)
Изучаю многопоточность, дошел до синхронизация и не могу понять как использовать lock, вот делаю программу для теста lock:
Кликните здесь для просмотра всего текста
смысл программы, класс, в нем всего один метод (Fun), который запускает счетчик и выводит значения, в Main я создаю два объекта этого класса, создаю потоки, и запускаю эти потоки, по моему разумению, как только первый запущенный поток дойдет до до этого метода, в частности до ключевого слова lock, второй поток будет заблокирован, т.е. в итоге сначала один поток (ONE) выведет все свои значения, потом следующий (TWO), но так не происходит, все выводится вперемешку. В чем косяк, где и что я не правильно понял?
0
|
02.10.2013, 12:52 | |
Ответы с готовыми решениями:
3
Lock не работает (многопоточность) Многопоточность, чтение переменной, несколько lock Многопоточность и их синхронизация, нужны примеры реализации Многопоточность, оператор Lock |
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
|
||||||
02.10.2013, 13:00 | 2 | |||||
Блок lock выполняется одновременно только одним потоком из всех, которые лочатся на объекте, указанном в скобках. Остальные потоки ждут.
У вас для каждого экземпляра testClass создается индивидуальный объект lockOn, в результате все экземпляры лочатся на разных объектах, что не приводит к блокировке. Сделайте lockOn static, например, и увидите разницу. Как вариант, запустите несколько потоков на выполнение метода Fun одного и того же объекта:
1
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
02.10.2013, 13:19 [ТС] | 3 |
т.е. правильно я понимаю, те потоки которые я хочу синхронизировать, у них должен быть один общий объект lockON ?
0
|
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
02.10.2013, 13:27 | 4 |
Я бы сказал иначе: те методы, которые лочатся на общем lockOn, будут синхронизированы в разных потоках.
1
|
02.10.2013, 13:27 | |
02.10.2013, 13:27 | |
Помогаю со студенческими работами здесь
4
Вывести на экран в символическом виде состояние NUM LOCK, CAPS LOCK и SCROLL LOCK Acer aspire 5552G-N974G64Mikk Проблема с Caps Lock, Num Lock, Scroll Lock Клавиатура мигает всеми тремя индикаторами Caps Lock, Scroll Lock и Num Lock и соответственно не работает! Многопоточность и синхронизация Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |