2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Qt menu
Сообщение16.11.2009, 23:08 


31/08/09
183
А можете немного про мьтоксы и семафоры рассказать ?

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 23:19 
Заслуженный участник


28/04/09
1933
mycoding
В двух словах не могу, но элементарный ликбез может осуществить Wikipedia, более продвинутый - Intuit.

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 23:39 


31/08/09
183
А можете подсказать , вот пытаюсь запустить потоки на 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, (void*)i, 0,&IDThread[i]);
   if (hThread[i] == NULL)
   {std::cout << "Error";std::cout << GetLastError();}
  }

}

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

 Профиль  
                  
 
 Re: Qt menu
Сообщение17.11.2009, 12:39 


31/08/09
183
Вот более подробный код

Код:
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;
}

 Профиль  
                  
 
 Re: Qt menu
Сообщение17.11.2009, 15:57 
Заслуженный участник


28/04/09
1933
mycoding
Функция RUN_THREADS:
1. должна иметь только один параметр типа LPVOID (он же void*);
2. может быть либо статическим членом класса, либо не являться членом класса вообще (это связано с тем, что у всякой нестатической функции-члена класса есть дополнительный, скрытый от программиста параметр, - указатель this на объект, для которого эта функция вызывается; а потому все нестатические функции-члены класса не попадают под правило 1).

 Профиль  
                  
 
 Re: Qt menu
Сообщение17.11.2009, 17:54 


31/08/09
183
Оно и так и так не работает у меня сначала в проге было LPVOID но всё равно не работало,
Ошибка в параметре &IDThread[i]

 Профиль  
                  
 
 Re: Qt menu
Сообщение17.11.2009, 18:14 
Заслуженный участник


28/04/09
1933
mycoding
Но Вы RUN_THREADS точно сделали статической?
mycoding в сообщении #262985 писал(а):
Ошибка в параметре &IDThread
Не знаю, какая ошибка м.б. в этом параметре (по крайней мере, по коду это не сильно видно), но если Вы его в дальнейшем не используете, можете передать в него NULL (функция CreateThread это позволяет).

 Профиль  
                  
 
 Re: Qt menu
Сообщение17.11.2009, 18:38 


31/08/09
183
ВОт прога, если можете исправте пожалуйста
http://moc-081.narod.ru/qt_proga.rar

-- Вт ноя 17, 2009 19:49:51 --

либо вот по этой ссылке какая
http://dl.dropbox.com/u/2536325/qt_proga.rar

-- Вт ноя 17, 2009 20:27:16 --

Если занулить то все равно та же самая ошибка вылетает

 Профиль  
                  
 
 Re: Qt menu
Сообщение18.11.2009, 19:37 
Заслуженный участник


28/04/09
1933
mycoding
Прототип функции RUN_THREADS (при объявлении класса MainWindow) должен выглядеть вот так:
Код:
static DWORD WINAPI RUN_THREADS(LPVOID param);
Заголовок функции в коде раскрытия ее реализации - то же, только без ключевого слова static (которое, собственно, и указывает на статичность функции):
Код:
DWORD WINAPI MainWindow::RUN_THREADS(LPVOID param)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group