![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Вопрос по WinAPI |
|
|
Win32 API - Вопрос по WinAPI
|
Новый участник Сообщения: 34 |
Вопрос по синхронизации процессов\потоков. Есть программа, в ней два потока. В одном ввод символа, в другом выводится "*" если мы ввели цифру (в случае ввода символа ничего не выводится, и нужно повторить ввод). Как сделать чтобы программа принимала значение (цифру или символ) и сразу запускался второй поток, выводящий "*"? (сейчас ввод данных производится после нажатия Enter'a). Подскажите через что можно реализовать.
|
|
Отправлено: 23:44, 02-06-2011 |
Старожил Сообщения: 154
|
Профиль | Отправить PM | Цитировать всмысле через что можно реализовать? например в с# мона использовать System.Threading; оно имеет класс потока - Thread.
как я понимаю ты это делаешь в консоле - поэтому у тебя и затык с энтером. ты небось с консоли пытаешься получить строку что в корне неверно тебе нужно получать посимвольно. тогда энтер в конце не требуется. |
Отправлено: 09:19, 04-06-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Старожил Сообщения: 467
|
Профиль | Отправить PM | Цитировать SeRgikON, вы имеете в виду потоки ввода/вывода? Если да, то просто можно с одного потока (вводящего символ) считать символ, проверить, цифра ли, если истина, вывести во втором потоке *. Если у вас разные нити приложения, в которых ваша программа исполняется, тогда тут нужно немного по другому...(немного не понятно про какие потоки идет речь, в Java, на пример, потоки ввода-вывода называются Stream, а нити приложения-Thread).
|
------- Отправлено: 11:46, 04-06-2011 | #3 |
Старожил Сообщения: 154
|
Профиль | Отправить PM | Цитировать crashtuak,
да собственно говоря в "с" подобных языках также - потоки ввода/вывода: базовый класс - Stream, многозадачность - Thread |
Отправлено: 15:57, 04-06-2011 | #4 |
![]() Старожил Сообщения: 467
|
Профиль | Отправить PM | Цитировать Beyound, та я то знаю(от вас
![]() ![]() |
|
------- Отправлено: 16:20, 05-06-2011 | #5 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать crashtuak, потоки всмысле "нитей" приложения. и если можно поподробней, про "немного по другому"
![]() код: |
Отправлено: 14:25, 06-06-2011 | #6 |
![]() Старожил Сообщения: 467
|
Профиль | Отправить PM | Цитировать 1) Инклудим conio.h
2) Используем функцию _getch(). Возвращает int(код введенного символа '0'=48..'9'=57). 3) Проверяем введенный символ на принадлежность к числам, вызываем поток для печати "*". Пример кода: Далее по вашему коду: зачем данные действия разносить в разные потоки? TerminateThread(hThread1,0); помоему не имеет смысла, так как есть WaitForSingleObject(hThread1,INFINITE); которая(если не ошибаюсь) дожидается завершения потока... |
------- Отправлено: 00:10, 07-06-2011 | #7 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать как-то у меня вообще ничего не вводится через _getch()...
ну такое задание, в одном потоке ввод, а в другом вывод |
Отправлено: 19:40, 07-06-2011 | #8 |
![]() Старожил Сообщения: 467
|
Профиль | Отправить PM | Цитировать Понятно... А
Цитата crashtuak:
У меня почему то с сложными условиями в цикле не работало, пришлось сделать контрольную переменную типа bool, и в теле цикла пробегая по swicth устанавливать контрольную переменную в нужное состояние... |
|
------- Отправлено: 22:19, 07-06-2011 | #9 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать пример не работает, ничего не вводится
|
Отправлено: 22:58, 07-06-2011 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Хитрый вопрос по List-View (WinApi) | pva | Программирование и базы данных | 3 | 17-05-2005 13:38 | |
Тяжёлый вопрос про COMBOBOX (WinApi) | pva | Программирование и базы данных | 9 | 16-07-2004 15:24 | |
WinAPI | Guest | Программирование и базы данных | 1 | 19-03-2004 03:14 | |
Книга по WinAPI | antonym | Программирование и базы данных | 2 | 04-05-2003 11:59 | |
WinApi | fLANkeR | Программирование и базы данных | 3 | 25-01-2003 08:15 |
|