在上一篇博文中,我们介绍了利用socket进行简单的UDP/TCP的服务端和客户端的通信。
(一)
在基于UDP的程序中,你有没有想过,如果我的这台主机在通讯的时候要求既能够收到别的主机发来的数据,又能够自己向目的主机发出数据,该怎样实现?也就是说需要两个while循环同时进行。答案是使用多线程,一个线程用于接受数据,另一个线程用来发送数据。接下来我们介绍WinSock的多线程编程。
多线程的实现我们使用_beginthread()函数:
第二个参数是申请的内存空间,缺省(0)是1M,或者1024*1024,是一样的;
(一)
在基于UDP的程序中,你有没有想过,如果我的这台主机在通讯的时候要求既能够收到别的主机发来的数据,又能够自己向目的主机发出数据,该怎样实现?也就是说需要两个while循环同时进行。答案是使用多线程,一个线程用于接受数据,另一个线程用来发送数据。接下来我们介绍WinSock的多线程编程。
多线程的实现我们使用_beginthread()函数:
uintptr_t _beginthread(
void( *start_address )( void * ),
unsigned stack_size,
void *arglist
);
第一个参数是一个函数指针,这个 自己定义的函数返回类型是void,参数是void*;
第二个参数是申请的内存空间,缺省(0)是1M,或者1024*1024,是一样的;
第三个参数是要传递的参数。
如图:不同的线程使用的栈是不一样的,所以两个进程中的int n是不一样的。但是这两个进程所用的栈空间是在系统的栈空间中线性存放的。
//Multi