1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Есть желание написать программу, реализующую действия ракеты и её цели. Задаются координаты цели для ракеты, стрелками на клавиатуре можно менять положение цели в 2-х мерном пространстве, ракета должна отслеживать цель. Все это должно производиться "параллельно"..
Код исходный большой(т.е там файлов листинга просто много). Я знаю, что один вольво отвечает на мои безумные посты, на него и надежда вся. В общем, в коде я оставил комментарии, где происходит "неконтролируемое", они в 2х файлах main и realiz.cpp. Код в архиве...
Ну, видимо, если убрать SetEvent ,допустим, в ChangeCoordTarget, то поток с "полетом ракеты" не узнает о том, что координата поменялась ...
Если убрать SetEvent в ChangeCoordTarget, то поток с полетом ракеты никогда не выйдет из ожидания WaitForSingleObject, потому что событие - с автосбросом, как только один WaitFor... его дождался - оно сбрасывается, и если его опять не установить, то больше ни один WaitFor... его не дождется... Обращай на это внимание. Так что SetEvent-ы в обоих потоках нужны для того, чтобы запустить друг друга (твой изначальный ответ был неверен: один поток все-же запустится, а вот какой именно - это решает системный планировщик заданий).
Цитата
почему-то ракета не летит за целью, а просто перебирает координаты(x++,y--).
С твоей функцией у меня ракета снесла 4 цели из 4-х...
Цитата
выводиться ascii код нажатой клавиши.
Не нужен? Убери
// ResetEvent(changeCoordEvent); cout << (int)key << endl; // <--- Вот эту строчку