Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

fprintf() и треды

17K
23 апреля 2008 года
al.t
5 / / 30.06.2006
Имеется такой код:

Код:
#include <windows.h>
#include <stdio.h>

FILE *fp;

DWORD WINAPI
test (void*)
{
    fprintf(fp, "test to file in thread\n");
    fprintf(stdout, "test to stdout in thread\n");

    return 0;
}

int main ()
{
    HANDLE lpHandle;
    DWORD ThreadId;
   
    fp = fopen("test.txt", "a");

    fprintf(fp, "test to file\n");
    fprintf(stdout, "test to stdout\n");

    lpHandle = CreateThread(NULL,0,test,NULL,0,&ThreadId);

    WaitForSingleObject(lpHandle, INFINITE);
    fclose(fp);

    return 0;
}


Народ, обьясните почему не работает как предполагается? Тоесть fprintf в stdout выводит нормально, а если в программе есть вызов CreateThread, то в файл ничего не выводится ни в основном потоке до\после вызова CreateThread, ни в созданом потоке.. Как только закоментишь вызов, все работает как надо.. Никак не могу вьехать :(
247
24 апреля 2008 года
wanja
1.2K / / 03.02.2003
Попробуй сделать fflush
562
24 апреля 2008 года
tarekon
175 / / 19.08.2003
Ну вообще после WaitForSingleObject() неплохо было бы еще CloseHandle() вызвать - так, для порядка.
GetLastError() после каждой WinAPI функции вызывать пробовал? Что он говорит?

Какую версию Runtime используешь, многопоточную или нет?
Кстати, MSDN рекомендует использовать не CreateThread(), а _beginthreadex().
17K
26 апреля 2008 года
al.t
5 / / 30.06.2006
2wanja, thnx помогло
2tarekon, спс, приму к сведению :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог