как создаются threads
недавно перешел с делфи на vc++, пытаюсь создать чат для локалки.
Проблема в приеме данных. Сначала они принимались с помощью таймера, затем решил сделать с дополнительным потоком, вот код:
void ReceiveData()
{
if (WSAEventSelect(mainsocket, we, 0) == 0);
{
if (recv(mainsocket, ttr, 300, 0) == SOCKET_ERROR)
{
return;
}
SendMessage(edit2, WM_SETTEXT, 0, (LPARAM)ttr);
_strset(ttr, ' ');
return 1;
}
else return 0;
}
DWORD WINAPI ThreadProc(LPVOID lParam)
{
while (doTimer == TRUE)
{
ReceiveData();
}
return 0;
}
doTimer ставится в FALSE при WM_DESTROY окна.
ПОТОК ГРУЗИТ ПРОЦ НА 100% КАК ИЗБЕЖАТЬ ЭТОГО?
ок, нашел. Но проблема в следующем:
недавно перешел с делфи на vc++, пытаюсь создать чат для локалки.
Проблема в приеме данных. Сначала они принимались с помощью таймера, затем решил сделать с дополнительным потоком, вот код:
void ReceiveData()
{
if (WSAEventSelect(mainsocket, we, 0) == 0);
{
if (recv(mainsocket, ttr, 300, 0) == SOCKET_ERROR)
{
return;
}
SendMessage(edit2, WM_SETTEXT, 0, (LPARAM)ttr);
_strset(ttr, ' ');
return 1;
}
else return 0;
}
DWORD WINAPI ThreadProc(LPVOID lParam)
{
while (doTimer == TRUE)
{
ReceiveData();
}
return 0;
}
doTimer ставится в FALSE при WM_DESTROY окна.
ПОТОК ГРУЗИТ ПРОЦ НА 100% КАК ИЗБЕЖАТЬ ЭТОГО?
Тебе надо принимать данные по событию (оптимально) или поставь задержку в потоке на проверку
Тебе надо принимать данные по событию (оптимально) или поставь задержку в потоке на проверку
дык вот я не знаю, как так принимать по событию. строки не напишешь?
я кроме создания потоков-то ничего не знаю как с ними работать
дык вот я не знаю, как так принимать по событию. строки не напишешь?
я кроме создания потоков-то ничего не знаю как с ними работать
void ReceiveData()
{
if (!WSAEventSelect(mainsocket, we, FD_READ) )
{
WSAWaitForMultipleEvents(1, &we, FALSE, dwTimeout, FALSE) ;
if (recv(mainsocket, ttr, 300, 0) == SOCKET_ERROR)
{
return;
}
SendMessage(edit2, WM_SETTEXT, 0, (LPARAM)ttr);
_strset(ttr, ' ');
return 1;
}
else
return 0;
}
DWORD WINAPI ThreadProc(LPVOID lParam)
{
while (doTimer == TRUE)
{
ReceiveData();
}
return 0;
}