Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PostMessage в разных потоках. 
:(
    Опции темы
nikakoi
Дата 12.2.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.5.2006

Репутация: нет
Всего: нет



Добрый день.
Пишу многопоточное приложение и возникла следующая проблема:
Запускаю 8 отдельных потоков, каждый из которых по завершению отправляет ::PostMessage приложению. Отправляются все 8, а ловится 3-4... В чем может быть проблема подскажите плз?(((
PM MAIL   Вверх
jonie
Дата 12.2.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



мало кода


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
nikakoi
Дата 12.2.2008, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.5.2006

Репутация: нет
Всего: нет



Код ThreadHandler'a каждого потока:

Код

DWORD DigitalGlobeDownloadThread::ThreadHandler()
{
  int size = 0;

  BYTE* data1 = HttpRequest::DownloadFile2(test_image_existance_url, size);
  
  char* first_char = (char*)&data1[0];

  int server_response = atoi(first_char);
  
  delete data1;
  
  if(server_response == 0)
  {
    tiles_cache->MarkTileAsUnavailable(x, y, z);
    completed = true;
    return DW_OK;
  }
  else if(server_response == 1)
  {  
    BYTE* data = HttpRequest::DownloadFile2(url, size);

    if(size > 10 && data[0] == 0xFF && data[1] == 0xD8)
    {

     tiles_cache->WriteToCache(x, y, z, data, size);

      int wparam = z << 24 | y;
      int lparam = x;
      EnterCriticalSection(&DigitalGlobeDataProvider::lock_for_message);
      if(z == 19)
      {
        CString log_message1;
        log_message1.Format("downloading data for x = %d y = %d z = %d complete! sending message
                                            \n", x, y, z);
        log_file->WriteString(log_message1);
      }
      ::PostMessage(owner, WM_APP + 2, wparam, lparam);
      LeaveCriticalSection(&lock_for_message);
    }

    delete data;
  }
  completed = true;  

  return DW_OK;
}




Код метода на сообщение :
Код

  void MapView2::RasterDataLoaded(Message^ m)
  {
    int wparam = m->WParam.ToInt32();
    int lparam = m->LParam.ToInt32();

    RasterTileInformation tile;

    tile.level = (wparam & 0xFF000000) >> 24;
    tile.y = (wparam & 0x00FFFFFF);
    tile.x = lparam;

    if(tile.level == 19)
    {
      CString string;
      string.Format("MESSAGE for x = %d y = %d z = %d received \n", tile.x, tile.y, tile.level);
      log_file->WriteString(string);
    }

  ....
  }


В лог файле получаю:
downloading data for x = 1 y = 1 z = 19 complete! sending message 
downloading data for x = 2 y = 1 z = 19 complete! sending message 
downloading data for x = 2 y = 0 z = 19 complete! sending message 
downloading data for x = 1 y = 0 z = 19 complete! sending message 
downloading data for x = 3 y = 1 z = 19 complete! sending message 
downloading data for x = 3 y = 0 z = 19 complete! sending message 
MESSAGE for x = 3 y = 0 z = 19 received 
downloading data for x = 0 y = 1 z = 19 complete! sending message 
MESSAGE for x = 0 y = 1 z = 19 received 
downloading data for x = 0 y = 0 z = 19 complete! sending message 
MESSAGE for x = 0 y = 0 z = 19 received 


Это сообщение отредактировал(а) nikakoi - 12.2.2008, 17:12
PM MAIL   Вверх
Alek86
Дата 12.2.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: нет
Всего: 25



не в ту ветку спрашуешь...


--------------------
user posted image    user posted image
PM MAIL   Вверх
nikakoi
Дата 12.2.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.5.2006

Репутация: нет
Всего: нет



то есть как? Объясни подробнее плз...
PM MAIL   Вверх
Alek86
Дата 12.2.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: нет
Всего: 25



объясняю
тему нужно создать в этой ветке форума

Это сообщение отредактировал(а) Alek86 - 12.2.2008, 17:07


--------------------
user posted image    user posted image
PM MAIL   Вверх
nikakoi
Дата 12.2.2008, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.5.2006

Репутация: нет
Всего: нет



Ну блин. Ок, спасибо)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.