Что за...? Почему нельзя разбить на потоки???

Тема в разделе "WASM.WIN32", создана пользователем nitrotoluol, 21 янв 2007.

  1. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Ситуация такая. LoadLibraryA грузит нужную нам дллку. Эта либа при загрузке должна вызвать в отдельном потоке функцию, которая не возвращает управление...

    Кароч нужно 2 потока.
    Один для нашей функции, другой - чтобы вернуть управление
    Но!
    По непонятным причинам, в момент инициализации либы все потоки создаются замороженными, и разморозить их не удается никак :dntknw:((

    Сперва думал, где-то ошибка
    Перепроверил...
    нет....

    При инициализации нельзя создать работающий поток
    Что делать, как быть?

    Нужно 2 потока по любому...
     
  2. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    1. http://www.wasm.ru/forum/viewtopic.php?id=17454
    2. замороженный поток проснется после выхода из dllmain, в нем можно сделать все, что нужно, включая создание еще одного потока
    3. чистая теория: возможно, APC (QueueUserAPC) для созданного потока вызовется сразу, но это опасно, так как dllки для него еще не проинициализированны\
    4. тоже теория: возможно, что APC для текущего потока сработает при выходе из dllmain
    а может и нет..
     
  3. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Говорят что сие не всегда верно, вот мол для нескольких процев...
     
  4. HoBleen

    HoBleen New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    77
    SetTimer на время, явно большее времени отработки ф-и DllMain не подойдет?

    Еще можно попробовать TLS.
     
  5. P_F

    P_F New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2006
    Сообщения:
    116
    Адрес:
    Russia
    ни какого но...
    как только все длл мэйны отработают (все либы подгрузятся), начнётся выполнение
    с точки входа твоего потока, там запускаешь поток с функой из либы, и всё крутится...

    зы:
     
  6. DillerInc

    DillerInc New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2006
    Сообщения:
    41
    Никакой ошибки тут походу нет.Это своего рода особенность инициализации библиотеки.Вот две цитаты из актуальной ветки MSDN: