多线程多个参数的传入问题,高手进来。
最近在学习开发socket编程。基于同步的,伪代码如下:
struct infor
{
int flag;
long ip;
char * DesPath;
char * FileName;
};
infor WhereFrom
//发送文件的函数
DWORD WINAPI SendProc(LPVOID lpParameter)
{
infor SendTo(WhereFrom);
return 0;
}
void SendFile(SOCKET ComSocket,char * buf)
{
HANDLE SendThread=CreateThread(NULL,0,SendProc,(void *)ComSocket,NULL,NULL);
}
DWORD WINAPI MutexProc(LPVOID lpParameter // thread data
)
{
SOCKET MainSocket; //后面的初始化操作就不写了
sockaddr_in addr;
bind(MainSocket,(sockaddr *)&addr,sizeof(sockaddr_in));
listen(MainSocket,SOMAXCONN);
while(1)
{
sockaddr_in addrfrom;
SOCKET ComSocket =accept(MainSocket,(sockaddr* )&addrfrom,&addrlen);
char recvbuf[1024];
recv(ComSocket,recbuf,1024,0);
CopyMemory(temp,recvbuf,4);
//sprintf(flag,"%d",temp);
flag=atoi(temp);
printf("数组内容为%d",flag);
switch(flag)
{
case 0:
closesocket(ComSocket);
break;
case 1: //获取文件
break;
case 2:
SendFile(ComSocket,recvbuf);
//发送文件
break;
default:
break;
closesocket(ComSocket);
}
}
return 0;
}
void main()
{
CreateThread(NULL,NULL,MutexProc,(void *)&WhereFrom,0,0); //创建一个线程循环接收来自客户端的消息。
}
在我的SendFile里面。我要把套接字和那个缓冲区的东西都传进去,不知道怎么传。因为我缓冲去里面存了客户端想读取的是哪个文件的路径和文件名,非常必要的。必须要传进去。 因为我编写的这个是一个多线程多任务的程序。所以我没有用全局变量。怕会引起冲突,或者其它的问题,比如一个任务没有进行完,另一个任务无法进行等等。当然如果有好的同步方式并且不影响性能的话也是可以的
struct infor
{
int flag;
long ip;
char * DesPath;
char * FileName;
};
infor WhereFrom
//发送文件的函数
DWORD WINAPI SendProc(LPVOID lpParameter)
{
infor SendTo(WhereFrom);
return 0;
}
void SendFile(SOCKET ComSocket,char * buf)
{
HANDLE SendThread=CreateThread(NULL,0,SendProc,(void *)ComSocket,NULL,NULL);
}
DWORD WINAPI MutexProc(LPVOID lpParameter // thread data
)
{
SOCKET MainSocket; //后面的初始化操作就不写了
sockaddr_in addr;
bind(MainSocket,(sockaddr *)&addr,sizeof(sockaddr_in));
listen(MainSocket,SOMAXCONN);
while(1)
{
sockaddr_in addrfrom;
SOCKET ComSocket =accept(MainSocket,(sockaddr* )&addrfrom,&addrlen);
char recvbuf[1024];
recv(ComSocket,recbuf,1024,0);
CopyMemory(temp,recvbuf,4);
//sprintf(flag,"%d",temp);
flag=atoi(temp);
printf("数组内容为%d",flag);
switch(flag)
{
case 0:
closesocket(ComSocket);
break;
case 1: //获取文件
break;
case 2:
SendFile(ComSocket,recvbuf);
//发送文件
break;
default:
break;
closesocket(ComSocket);
}
}
return 0;
}
void main()
{
CreateThread(NULL,NULL,MutexProc,(void *)&WhereFrom,0,0); //创建一个线程循环接收来自客户端的消息。
}
在我的SendFile里面。我要把套接字和那个缓冲区的东西都传进去,不知道怎么传。因为我缓冲去里面存了客户端想读取的是哪个文件的路径和文件名,非常必要的。必须要传进去。 因为我编写的这个是一个多线程多任务的程序。所以我没有用全局变量。怕会引起冲突,或者其它的问题,比如一个任务没有进行完,另一个任务无法进行等等。当然如果有好的同步方式并且不影响性能的话也是可以的
...全文
相关推荐
C#多线程参数传递浅析.pdf
为了在多线程环境中传递多个参数,可以将参数封装在一个类中或者使用多个参数直接传递给线程或委托方法。
易语言多线程传递文本参数两种方法源码
**方法二:使用线程参数**易语言支持在创建线程时传入参数,这样可以更安全地传递文本,避免了全局变量可能引发的线程安全问题。1.
易语言多线程参数应用源码-易语言
在易语言中,线程函数的定义类似于其他编程语言中的回调函数,其格式一般为“函数名(参数列表)”,在创建线程时将线程函数和参数一同传入。
vc多线程实例源代码
创建线程:调用`CreateThread()`,传入线程函数指针、参数、线程属性等信息。3. 线程执行:线程函数中的代码将在新创建的线程中运行。4.
vc多线程编程简单介绍vc多线程编程简单介绍vc多线程编程简单介绍
- 创建`std::thread`对象,传入线程函数和参数。四、线程同步与通信在多线程环境下,线程间的同步和通信是非常关键的,以防止数据竞争和死锁等问题。


进程/线程/DLL
