我编写了一个带有Win32 API和C++的TCP服务器,但它是单线程的.任何人都可以告诉我,我将如何使其多线程?我想,对于每个新接受的连接,我都必须生成一个处理它的线程.但我从来没有在Win32中使用线程的经验.谁能告诉我如何使用Win32和C++进行线程编程?
我得到上面的错误信息(我用谷歌搜索,发现与缺少大括号或其他东西有关),但是,我看不到这个缺少的括号在哪里?
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
class Something{
static DWORD WINAPI thread_func(LPVOID lpParameter)
{
thread_data *td = (thread_data*)lpParameter;
cout << "thread with id = " << td->m_id << endl;
return 0;
}
int main()
{
for (int i=0; i< 10; i++)
{
CreateThread(NULL, 0, thread_func, new thread_data(i) , 0, 0);
}
int a;
cin >> a;
}
struct thread_data
{
int m_id;
thread_data(int id) : m_id(id) {}
};
}
Run Code Online (Sandbox Code Playgroud) 正如标题所说.以下是我的代码框架.
class CLASS
{
public:
void A();
private:
DWORD WINAPI B(LPVOID);
};
void CLASS::A()
{
DWORD (WINAPI CLASS::*thread)(LPVOID) = &CLASS::B;
...
CreateThread(NULL, 0, thread, &arg, 0, NULL);
...
}
Run Code Online (Sandbox Code Playgroud)
函数B需要CLASS的成员变量.
但是当我编译它时,我有一个错误代码.
它"无法将参数3从'DWORD(__ stdcall CLASS ::*)(LPVOID)'转换为'LPTHREAD_START_ROUTINE'"或类似的东西.
我不知道英语环境是否相同.
有人可以帮忙吗?