Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 32
1

[Многопоточность] Как в функцию, которая будет выполняться в отдельном потоке, передать нужные аргументы?

22.09.2014, 18:53. Показов 1134. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть функция:
C++
1
2
3
4
5
6
7
8
9
10
UINT control1(LPVOID Param)
{
        char msg;char pr[]="w";
    while(true){
        for(i=1;i<=16;i++)
        for(j=1;j<=16;j++)
            if(stream[i]==j){clients[j]=i;MessageBoxA(NULL,"User [i] is connected!","Connect",MB_OK);}
    for(i=1;i<=16;i++)
        if(User[i].Send(pr,sizeof(pr))<0&&stat[i]==1){User[i].Close();stat[i]=0;MessageBoxA(NULL,"User [i] is disconnected!","Disconnect",MB_OK);}
}
Как ей передать мои массивы (clients[],stat[] и.т.д.),если она может принимать только LPVOID Param(кстати,что это за такой аргумент?). Если после LPVOID Param начну перечислять передаваемые аргументы,то AfxBeginThread(control1,this) не будет работать. Если функция control1 будет не UINT,то тоже не будет работать. Как же быть,как передать мои массивы в поток и извлекать обратно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2014, 18:53
Ответы с готовыми решениями:

Простейший поток, не хочет выполняться в отдельном потоке!
На форме два элемента прогресс_бар + кнопка, по клику на которую должна выполниться функция my_f()...

Написать функцию, которая будет выполняться раз в день
Всем доброго времени суток. как в MS SQL Server Management studia сделать функцию которая будет...

Как заставить функцию выполняться в потоке
По примерам написал код создания потока: #include &lt;iostream&gt; using namespace std; #include...

Как в функцию передать функцию, которая будет слотом?
Как в функцию передать функцию, которая будет слотом? То, что написано в интернете и тут...

3
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
23.09.2014, 11:09 2
studibenker, Передача переменных в поток эту тему смотрели?
0
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 32
23.09.2014, 16:10  [ТС] 3
смотрел,но я с CWinThead работаю,а там другие параметры
0
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
23.09.2014, 17:17 4
studibenker, ну через структуру то можно передать аргументы? Я себе это представил примерно таким псевдокодом:
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 "stdafx.h"
#include <windows.h>
#include <afxwin.h>
typedef struct
{
    char * clients;
    char * stat;
   /* всё, что душе угодно */
} MsParams_t;
 
UINT control1(LPVOID Param)
{
    MsParams_t * ptr = (MsParams_t *)Param;
      
            if(ptr->clients[i]==j){(ptr->clients[j]=i;MessageBoxA(NULL,"User [i] is connected!","Connect",MB_OK);}
   ...
}
 
    
int _tmain(int argc, _TCHAR* argv[])
{
 static MsParams_t params;
  params.clients = "sample";
  params.stat = "1234";
CWinThread* myWinThread = AfxBeginThread(*control1,(void*)&params);
 
    return 0;
}
Или я не прав?
Еще вариант попробовать глобальные переменные использовать.
0
23.09.2014, 17:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2014, 17:17
Помогаю со студенческими работами здесь

Как запустить функцию в отдельном потоке?
Есть вот такая функция: bool form1::is_sector_overflowed(Label^ lbl, int x, int y, array&lt;Label^,...

Как выполнить функцию в отдельном потоке?
Вызывается функция, которая выполняется достаточно долго. Как вызвать эту функцию в отдельном...

Как вызвать функцию с параметрами в отдельном потоке
Всем привет. Есть такой код: Imports System.Threading.Thread Public Class Form1 Dim N, f,...

Как правильно передать аргументы в функцию?
Подскажите пожалуйста, как правильно сделать из этого функцию Node *p = new Node;...

Как передать аргументы в функцию-обработчик события?
Как передать аргументы в функцию-обработчик события? Например: &lt;button id=&quot;btn1&quot;&gt;1&lt;/button&gt; ...

Как правильно передать аргументы в шаблон функцию принимающую вектор класса?
Пытаюсь сделать функцию которая будет принимать вектор для класса Vehicle, выводить этот вектор и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru