28 / 28 / 5
Регистрация: 07.09.2012
Сообщений: 119

Не работает пример, демонстрирующий блокирующую коллекцию

17.12.2012, 14:19. Показов 864. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста разобраться со следующим кодом (взят из книги Шилдта)
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
28
29
30
31
32
33
34
35
36
37
38
39
using System; 
using System.Threading.Tasks; 
using System.Threading; 
using System.Collections.Concurrent; 
class BlockingDemo { 
static BlockingCollection<char> bc; 
// Произвести и поставить символы от А до Z. 
static void Producer() { 
for(char ch = 'А'; ch <= 'Z'; ch++) { 
bc.Add(ch); 
Console.WriteLine("Производится символ " + ch) ; 
} 
} 
// Потребить 26 символов, 
static void Consumer() { 
for(int i=0; i < 26; i++) 
Console.WriteLine ("Потребляется символ " + bc.Take()); 
} 
static void Main() { 
// Использовать блокирующую коллекцию, ограниченную 4 элементами,
bc = new BlockingCollection<char>(4); 
// Создать задачи поставщика и потребителя. 
Task Prod = new Task(Producer); 
Task Con = new Task(Consumer); 
// Запустить задачи. 
Prod.Start();
Con.Start();
// Ожидать завершения обеих задач, 
try { 
Task.WaitAll(Con, Prod); 
} catch(AggregateException exc) { 
Console.WriteLine(exc); 
} finally { 
Con.Dispose (); 
Prod.Dispose(); 
bc.Dispose (); 
} 
} 
}
Почему он может не работать? компилятор не ругается вообще, но прога просто не оканчивается. Своих изменений в программу будто бы не вносил...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.12.2012, 14:19
Ответы с готовыми решениями:

Нужен пример, демонстрирующий работу udpClient
Добрый день. Вот начал работать с udpClient и у меня появился вопрос а как правильно всё делать? Подскажите правильным примером для...

Реальный пример, демонстрирующий необходимость использования XML.
В теории наслушался и начитался много про XML. Но на практике пока не опробовал. В связи с чем хотелось бы попросить людей сведущих в этом...

Простой пример иерархии классов, демонстрирующий полиморфный вызов метода
Приведите пример простой иерархии классов, демонстрирующий полиморфный вызов метода (работа с классом-наследником через ссылку на базовый...

2
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
17.12.2012, 14:28
temcha, что значит "не оканчивается"?
0
28 / 28 / 5
Регистрация: 07.09.2012
Сообщений: 119
17.12.2012, 15:01  [ТС]
жму Ctrl+F5 и ничего не происходит - мигает нижний слеш "_" и все.

Добавлено через 14 минут
Все, разобрался. Всем спасибо. Проблема была в том, что при копировании кода буква английского алфавита А распозналась как русская или что то в этом духе.

Добавлено через 10 минут
Теперь новый вопрос: по идее, если строку
C#
1
bc = new BlockingCollection<char>(4);
изменить на
C#
1
bc = new BlockingCollection<char>(1);
то результат выполнения программы должен иметь вид поочередного добавления и потребления символа (т.к. установлено ограничение в 1 единицу, что в свою очередь означает, что при достижении этого лимита задача должна блокироваться до освобождения места в коллекции.
Тем не менее, результат немного не такой, а именно:
Производится символ A
Потребляется символ A
Производится символ B
Производится символ C
Потребляется символ B
Потребляется символ C
................................
Каким образом возможен такой результат?
 Комментарий модератора 
Одна тема - один вопрос
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.12.2012, 15:01
Помогаю со студенческими работами здесь

Написать резидентную программу, блокирующую доступ к каталогу
Добрый день! У меня задание: написать резидентную программу,блокирующую доступ к каталогу, и возобновляющую доступ при вводе...

Написать программу, блокирующую изменение некоторых файлов и ключей реестра
Здравствуйте. Нужно написать программу, блокирующую изменение некоторых файлов и ключей реестра. Подскажите, пожалуйста, с помощью...

Не работает (видимо) байндинг при добавлении в коллекцию из другого потока (MVVM)
В общем, написал программу (WPF). Когда весь код был в MainWindow.xaml.cs, то такой код нормально работал: private...

Разобрать код, демонстрирующий работу с указателями
Здравствуйте. Помогите пожалуйста разобраться с работой указателей. #include &lt;iostream&gt; using namespace std; int main() ...

Оценить код, демонстрирующий заполнение стека
pascal void sumpas(int a, int b){ printf(&quot;&amp;a = %x\n&quot;, &amp;a); printf(&quot;&amp;b = %x\n&quot;, &amp;b); } цель посмотреть как заполняется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru