Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MaxxximyM
18 / 2 / 1
Регистрация: 31.08.2011
Сообщений: 132
#1

Не получается создать поток - C++

12.08.2012, 22:48. Просмотров 757. Ответов 4
Метки нет (Все метки)

Здравствуйте. Есть код, создающий поток:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include <Windows.h>
#include <process.h>
 
void inThread(void* pParams);
 
void main()
{ 
_beginthread(inThread, 0, NULL); 
}
 
void inThread(void* pParams){
MessageBox(NULL, "YRA", "MES", MB_OK);
_endthread();
}
Или я дико туплю или Visual Studio. Программа компилится без ошибок, но MessageBox не выводится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2012, 22:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не получается создать поток (C++):

Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде локальной переменной внутри функции. - C++
Совсем не понял эту тему. Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде...

Не получается запустить поток - C++
Доброго времени суток. Делаю как написано в книжке но ничего не получается. Помогите пожалуйста. void __fastcall...

Поле выполнения цикла получается непрерывный поток данных - C++
Здравствуйте! подскажите пожалуйсто, почему у меня после поле выполнения цикла получаетса какой то неперерывный поток данных? ...

Создать фаловый поток - C++
#include &lt;stdio.h&gt; #define n 24 void main() { int i,j=0,p,a; for (i=0;i&lt;n;i++) scanf(&quot;%d&quot;,&amp;a); for (i=0;i&lt;n;i++) ...

Создать свой поток данных - C++
Не могу понять, возможно ли как то создать свой поток данных? Знаю есть файловые потоки, cin cout cerr, а как быть если мне нужен поток...

Как создать поток в Linux? - C++
Программеры! Подскажите, пожалуйста, как создавать потоки в Linux. В Windows есть CreateThread(), а в Linux как? Можно спросить иначе:...

4
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
12.08.2012, 23:00 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <process.h>
#include "windows.h"
 
void myThread(void *pParams) 
{ 
    MessageBoxA(NULL, "YRA", "MES", MB_OK);
    _endthread(); 
} 
 
int main() 
{ 
    _beginthread(myThread, 0, NULL); 
    system("PAUSE");
    return 0;
}
0
Миниатюры
Не получается создать поток  
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
12.08.2012, 23:13 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <Windows.h>
#include <process.h>
 
void inThread(void* pParams);
 
int main()
{ 
    _beginthread(inThread, 0, NULL); 
    system("pause");
    return 0;
}
 
void inThread(void* pParams)
{
    MessageBoxA(NULL, "YRA", "MES", MB_OK);
    _endthread();
}
Добавлено через 9 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <windows.h>
#include <process.h>
 
unsigned __stdcall ThreadFunc( void * arg) // Функция потока
{
    char ** str = (char**)arg;
    MessageBoxA(0,str[0],str[1],0);
    _endthreadex( 0 );
    return 0;
};
 
int main(int argc, char* argv[])
{
    TCHAR * InitStr1[2] = {L"First thread running!", L"11111"};// строка для первого потока
    TCHAR * InitStr2[2] = {L"Second thread running!",L"22222"};// строка для второго потока
    unsigned uThreadIDs[2];
 
    HANDLE hThreads[2];
    hThreads[0] = (HANDLE)_beginthreadex( NULL, 0, &ThreadFunc, InitStr1, 0,&uThreadIDs[0]);
    hThreads[1] = (HANDLE)_beginthreadex( NULL, 0, &ThreadFunc, InitStr2, 0,&uThreadIDs[1]);
 
    // Ждем, пока потоки не завершат свою работу
    WaitForMultipleObjects(2, hThreads, TRUE, INFINITE ); // Set no time-out
    // Закрываем дескрипторы
    CloseHandle( hThreads[0] );
    CloseHandle( hThreads[1] );
    return 0;
}
2
MaxxximyM
18 / 2 / 1
Регистрация: 31.08.2011
Сообщений: 132
13.08.2012, 09:00  [ТС] #4
Всё решилось переустановкой Visual'а.

Кстати Infinity3000, не подскажешь код для ожидания завершения ОДНОГО потока?
0
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
13.08.2012, 13:37 #5
Цитата Сообщение от MaxxximyM Посмотреть сообщение
код для ожидания завершения ОДНОГО потока?
WaitForSingleObject(hThreads[0],INFINITE);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2012, 13:37
Привет! Вот еще темы с ответами:

Можно ли в DLL создать поток? - C++
Мне необходимо создать DLL, в котором был бы отдельный поток Windows. Однако, как выяснилось, это не так просто как в случае с приложением....

Не могу создать файл в поток ofstream - C++
Всех с наступившем НГ!) Не могу открыть/создать файл в поток. fstream somf; somf.open(&quot;c:\\users\\admin\\documents\\visual...

Создать поток в конструкторе с ссылкой на этот же объект - C++
Собственно нужно что бы 2 потока работало с 1 объектом, первый гонял функцию в цикле, а 2-й ( основной) был управлением... Вот код :) ...

Как создать виртуальный поток и переопределить оператор <<? - C++
Виртуальный то есть имеется ввиду не файловый и не строковый и не консольный. Впрочем, создание сего не противоречит синтаксису. Вот,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
13.08.2012, 13:37
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru