Организация многопоточных приложений(исправить)

нужно изменить программу так, чтобы при нажатии клавиши символа добавлялся символ справа, а при нажатии backspace удалялся последний символ. помогите кто чем может // при нажатии "1" -> F=F+1 (операция 1) // при нажатии "0" -> F=F-1 (операция 2) #include #include #include #include HANDLE hThread; // дескриптор создаваемого потока DWORD IDThread; // идентификатор потока DWORD ThreadProc(log *p); // функция потока (параметр - // указатель на структуру log) int F=0; // разделяемая глобальная переменная clock_t wtime=100; // время задержки (мс) void waiting(clock_t dt); // функция задержки // Журнал struct log { int nom; // порядковый номер операции int key; // код нажатой клавиши DWORD ID; // идентификатор созданного потока clock_t t1; // время начала операции clock_t t2; // время завершения операции int F; // результат операции в дочернем потоке int Fc; // результат операции главном потоке // (переменная-дублер) } mylog[1000]; // не более 1000 строк в журнале//=================================== ============== int main() // главный поток { int i=0; // счетчик операций int j=1; // счетчик вывода строк журнала int key=1; // код нажатой клавиши int flag=1; // признак завершения программы int Fcontr; // переменная-дублер mylog[1].t2=0; // признак того, что поток не завершен Fcontr=F;// повторять пока flag !=0 или i<1000 while (flag || i>=1000) { //Прием кода нажатой клавиши if (kbhit()!= 0) { key= getch(); // формирование переменной-дублера if (key == 48) Fcontr=--Fcontr; else Fcontr=++Fcontr; //Проверка кода нажатой клавиши switch (key) { case 27 : {flag=0; break;} // признак выхода из // программы (Esc) case 48 : // нажата клавиша "0" case 49 : // нажата клавиша "1" { i=++i; //следующая операция // формируем строку журнала mylog[i].nom=i; mylog[i].key=key; mylog[i].t2=0; mylog[i].F=0; mylog[i].Fc=Fcontr; mylog[i].t1=clock(); // создание потока без немедленного запуска hThread= CreateThread(NULL,0,ThreadProc,&myl og[i],CREATE_SUSPENDED,&IDThread); if (hThread == NULL) { cout << "Thread error" << key << endl; getch(); return 0; } else { // запуск потока mylog[i].ID=IDThread; ResumeThread(hThread); } } } } // завершение работы потока проверяется по // сформированному в функции // потока значению времени t2 if (mylog [j].t2!=0) { // вывод j-й строки журнала cout << j << " " << mylog[j].key << " " << mylog[j].ID << " " << mylog[j].t1 << " " << mylog[j].t2 << " " << mylog[j].F << " " << mylog[j].Fc <
1 ответ

ну пожалуйста, помогите, кто-нибудь!!!