【发布时间】:2015-05-06 10:01:46
【问题描述】:
我创建了一个应用程序,我希望一个线程单独处理listen-UDP并让我成为一个缓冲区,但是当我尝试将它传递给线程时它说存在兼容性问题
hThread = CreateThread(
NULL, // default security attributes
0, // use default stack size
start, // thread function name
&buffer, // argument to thread function
0, // use default creation flags
&dwThreadId);
我的启动函数是
void start(buffer_t *buffer)
{
SOCKET s;
struct sockaddr_in server, si_other;
int slen , recv_len;
char buf[BUFLEN];
WSADATA wsa;
}
错误是
1 IntelliSense:“void (*)(buffer_t *buffer)”类型的参数与“LPTHREAD_START_ROUTINE”类型的参数不兼容 c:\users\madihamalik\documents\visual studio 2010\projects\udp listener\udp listener\ listerner.c 189 12 UDP 监听器
【问题讨论】:
-
CreateThread的线程例程需要匹配DWORD WINAPI ThreadProc(LPVOID)。那不是你给它的。因此错误。 -
我能用它做什么?
-
嗯,改变你的启动功能以符合预期?
-
修复函数声明后,添加栈变量:char * buffer = theParameterName;像以前一样使用缓冲区。
标签: c multithreading visual-studio