Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Qt winapi потоки
Форум на CrossPlatform.RU > Библиотеки > Другие библиотеки
mycoding
Пытаюсь запустить потоки на qt используя winapi.
Но не работает выдаёт ошибку вот код
void MainWindow::createthreads()
{
  stop=0;
  for(int i=0;i<5;i++)
  phils[i].eat=100;

  for(int i=0;i<5;i++)
  {
   hThread[i] = CreateThread(NULL, 0,RUN_THREADS, i, 0,
                             &IDThread[i]);
   if (hThread[i] == NULL)
   {std::cout << "Error";std::cout << GetLastError();}
  }

}

DWORD WINAPI MainWindow::RUN_THREADS(int i)
{
    int n=(int)i;
    while(1)
    {
       think(n);
       take_forks_get_back_forks(n);
    }

  return 0;


а вот ошибка
C:/Qt-progi/Programming/laba_5/20/mainwindow.cpp:215: error: argument of type `DWORD (MainWindow::)(void*)' does not match `DWORD (*)(void*)'


Прочитал одну статью здесь по такому же вопросу на этом форуме, но там не написано как это решать.
Litkevich Yuriy
Цитата(mycoding @ 17.11.2009, 21:01) *
argument of type `DWORD (MainWindow:: )(void*)' does not match `DWORD (*)(void*)
ну собственно компиллер тебе явно говорит в чём ошибка:
Цитата
аргумент типа `DWORD (MainWindow::)(void*)' не соответствует `DWORD (*)(void*)


Цитата(mycoding @ 17.11.2009, 21:01) *
hThread[i] = CreateThread(NULL, 0,RUN_THREADS, i, 0,
&IDThread[i]);
что такое RUN_THREADS?
mycoding
Если есть возможность гляньте прогу вот
сорс http://dl.dropbox.com/u/2536325/qt_proga.rar

В winapi всё в таком же виде работает...

Ой, ссылка не рабочая
вот рабочая http://moc-081.narod.ru/qt_proga.rar
Litkevich Yuriy
mycoding, ты лучше на вопросы отвечай, а то людям будет не интересно тему читать
mycoding
А я потом и сорс выложу, он такой интересный )))


CODE
void MainWindow::createthreads()
{ DWORD ID1;
stop=0;
for(int i=0;i<5;i++)
phils[i].eat=100;

for(int i=0;i<5;i++)
{
hThread[i] = CreateThread(NULL, 0,RUN_THREADS, i, 0,
&IDThread[i]);
if (hThread[i] == NULL)
{std::cout << "Error";std::cout << GetLastError();}
}

}

DWORD WINAPI MainWindow::RUN_THREADS(int i)
{
int n=(int)i;
while(1)
{
think(n);
take_forks_get_back_forks(n);
}

return 0;
}


RUN_TREADS это запуск потока номер i
Litkevich Yuriy
Цитата(mycoding @ 17.11.2009, 21:54) *
RUN_TREADS это запуск потока номер i
если мне не изменяет память это указатель на функцию, где у тебя функция RUN_TREADS?
из твоего кода я вижу только то, что видит компилятор т.е. функцию MainWindow::RUN_THREADS(int i)
mycoding
Ну я этот вариант нам препод дал а я его уже реализую , мне тоже не нравится как сделано.
Litkevich Yuriy
Цитата(mycoding @ 17.11.2009, 22:11) *
мне тоже не нравится как сделано.
опиши свой вариант
SABROG
Я так понимаю он пытается передать указатель на метод RUN_THREADS. Этот метод вроде бы надо делать статическим или глобальным.
Elfinit
А каким боком это к Qt относится??
Litkevich Yuriy
Цитата(Elfinit @ 17.11.2009, 23:28) *
А каким боком это к Qt относится??
вроде как тем, что он в приложении на Qt пытается WinAPI использовать :)
mycoding
Litkevich Yuriy, а моего варианта нет )))
Только то что препод дал

Я просто пока не умею потоки делать на qt
поэтому делаю как получается )))
Litkevich Yuriy
тема перезжает из Qt, т.к. для начала надо с Си/Си++ разобратся.

mycoding, давай описание (объявление) функции CreateThread, я его не помню.
Разберём всё пополочкам
mycoding
Я же весь код код кинул , что ещё могу дать ?
Litkevich Yuriy
Цитата(mycoding @ 17.11.2009, 23:48) *
что ещё могу дать ?
то, что я попросил
mycoding
Цитата(Litkevich Yuriy @ 17.11.2009, 20:49) *
mycoding, давай описание (объявление) функции CreateThread, я его не помню.
Разберём всё пополочкам


А где я его возьму , я и сам без этого описания всё делаю
Litkevich Yuriy
mycoding, в документации по WinAPI.
Цитата(mycoding @ 18.11.2009, 0:29) *
я и сам без этого описания всё делаю
потому и получаешь ошибки при компиляции
mycoding
Ну а почему на codeblockse тоже самое реализованиое через просто winapi работает?
Litkevich Yuriy
Цитата(mycoding @ 18.11.2009, 3:07) *
на codeblockse тоже самое
не знаю что это такое, еслиб ты отвечал по существу на задаваемые тебе вопросы, уже бы получил работоспособный код.
mycoding
Короче прога получилось если нужен сорс вот можете взять здесь moc-081.narod.ru/data/oco/oco_3_1_qt.rar
СДелана благодаря очень классному парнишке с этого сайта, который не пожелел время и помог мне. Написана с помощью потоков winapi, если у кого есть желание помочь с потоками на qt
вот моя ася 395712335.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.