|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.10.2010, 20:22 | #1 |
Форумчанин
Регистрация: 06.10.2009
Сообщений: 121
|
разобраться в программе
Здравствуйте. Программа непонятно работает при пошаговом выполнении.
Если поставить Брейки в выделенных местах и затем выполнять пошагово, то выводит что-то в консоль, хотя в выполняемой строке нет и близко Write или writeln. Здесь потоки обращаются к массиву, что-то меняют в нём, и в конце выдается массив с которым поработали потоки. Кто-нибудь может помочь мне подробно разобраться в этом коде. Это полный код. Код:
Ищущий да обрящет
Последний раз редактировалось fredwriter; 09.10.2010 в 20:40. |
09.10.2010, 20:38 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Насколько я вижу вывод на экран происходит в процедурах потоков, так что вполне нормально если ты ставишь бряк на главный поток, а остальные потоки то продолжать отработку должны без проблем и остановок - это же потоки.
I'm learning to live...
|
|
09.10.2010, 20:39 | #3 |
Форумчанин
Регистрация: 06.10.2009
Сообщений: 121
|
Щас поправлю Забыл места выделить
Кто-нибудь может попроще объяснить, что происходит в программе, а то я понимаю её урывками: там понимаю, тут не понимаю. как в кино. Понятно, что потоки что-то делают с массивом. Что такое семафор - это объект синхронизации, который следит за тем, чтобы к общему ресурсу не смогли одновременно получить доступ более n потоков. А как в этой программе это работает. Событие - это объект синхронизации, который позволяет потоку продолжить работу при наступлении определенного события. Помогите разобраться. По отдельности каждая процедура вроде понятно, что делает, кроме двух функций, одна Proc1 - функция добавляющих потоков(что значит добавляющих и что она делает), а вторая Proc2 - процедура вынимающего потока(аналогично). И в целом что делает программа не понятно.
Ищущий да обрящет
Последний раз редактировалось Stilet; 09.10.2010 в 22:24. |
09.10.2010, 22:25 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
10.10.2010, 04:54 | #5 |
Форумчанин
Регистрация: 06.10.2009
Сообщений: 121
|
Ну, может быть, с утреца, как нибудь, или днём?
Ищущий да обрящет
Последний раз редактировалось fredwriter; 10.10.2010 в 05:09. |
10.10.2010, 10:19 | #6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
А что Вы собственно, не можете понять? Программа моделируюет одновременную конкурирующую запись в общий ресурс (в Вашем случае это массив Q ) для того, чтобы не возникло deadlock'ов в программе реализован механизм семафоров (так же, как и в ядре Windows - процесс перед записью проверяет семафор, если он свободен, устанавливает признак, что ресурс занят, производит запись и после осовобождает семафор (позволяя другим конкурирующим потокам осуществлять запись в общий ресурс). Скажите, а Ведь Вы не сами писали эту программу?! |
|
10.10.2010, 10:47 | #7 |
Форумчанин
Регистрация: 06.10.2009
Сообщений: 121
|
Если бы я писал её сам, я бы не спрашивал как она работает. Для написания такой программы мне не хватает знаний видимо.
Ищущий да обрящет
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Коментарии к программе | savra | Помощь студентам | 4 | 13.01.2010 01:32 |
Помогите разобраться в программе... | Tee Jay | Помощь студентам | 0 | 25.06.2009 19:20 |
помогите разобраться в программе | iwaniwan | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 15.04.2009 19:38 |
Помогите разобраться в программе | Gekada | Общие вопросы C/C++ | 1 | 09.12.2008 19:23 |