S
softmaker
Реализуйте 'синхронное' cвойство SharedRes типа string .
То есть свойство, самостоятельно заботящиеся о том, чтобы одновременно-обращающиеся к нему потоки работали с ним корректно.
Правила такого обращения следуюшие:
1. Записывать в одно время может только один поток, любой следующий 'писатель' должен ждать(блокироваться).
2. Если один поток выполняет запись, то любой читатель должен ждать завершения
этой записи.
3. Пока происходит чтение свойства запись невозможна.
Однако требуется избежать такой ситуации , когда запись невозможна из-за сменяющих друг друга операций чтения.
Любое количнеств читающих потоков могут читать одновременно.
В главном классе программы создаются
10 потоков читателей и
2 потока писателя ,
пытающиеся использовать это свойство.(Созадют класс который содержит это свойство)
При наличии у вас двух вариантов ('руками' и используя специально предназаначенный для этого класс из пространства имен System.Threading)
реализации свойства, реализуйте оба - именно и будет ожидаемым решением.
Для эмуляции долгих операций чтения и записи - воспользутесь случайными задержками , у операций записи задержки больше чем у операции чтения.
---------
Как сделать подобную синхронизацию? с помощью lock не получается , нужно что-то ещё! :blink:
То есть свойство, самостоятельно заботящиеся о том, чтобы одновременно-обращающиеся к нему потоки работали с ним корректно.
Правила такого обращения следуюшие:
1. Записывать в одно время может только один поток, любой следующий 'писатель' должен ждать(блокироваться).
2. Если один поток выполняет запись, то любой читатель должен ждать завершения
этой записи.
3. Пока происходит чтение свойства запись невозможна.
Однако требуется избежать такой ситуации , когда запись невозможна из-за сменяющих друг друга операций чтения.
Любое количнеств читающих потоков могут читать одновременно.
В главном классе программы создаются
10 потоков читателей и
2 потока писателя ,
пытающиеся использовать это свойство.(Созадют класс который содержит это свойство)
При наличии у вас двух вариантов ('руками' и используя специально предназаначенный для этого класс из пространства имен System.Threading)
реализации свойства, реализуйте оба - именно и будет ожидаемым решением.
Для эмуляции долгих операций чтения и записи - воспользутесь случайными задержками , у операций записи задержки больше чем у операции чтения.
---------
Как сделать подобную синхронизацию? с помощью lock не получается , нужно что-то ещё! :blink: