线程并发,用标志位同步时要小心
来源:互联网 发布:传奇霸业魂珠升级数据 编辑:程序博客网 时间:2024/06/05 23:42
线程并发,用标志位同步时要小心
static INT bUseCount = 0;
static void socket_startup()
{
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD(2,2);
if (bUseCount++ == 0) {
WSAStartup(wVersionRequested, &wsaData);
}
}
int socket_create(int domain, int type)
{
socket_startup();
return socket(domain, type, 0);
}
void proc_0(void * params)
{
int fd_listen;
fd_listen = socket_create(1, SOCK_STREAM);
...
}
_beginthread(proc_0, 0, 0);
_beginthread(proc_1, 0, 0);
_beginthread(proc_2, 0, 0);
三个线程并发,调用socket之前WSAStartup可能未执行!
对变量的访问加锁可解决这个问题
mutex.Lock();
if (bUseCount++ == 0) {
WSAStartup(wVersionRequested, &wsaData);
}
mutex.Unlock();
static INT bUseCount = 0;
static void socket_startup()
{
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD(2,2);
if (bUseCount++ == 0) {
WSAStartup(wVersionRequested, &wsaData);
}
}
int socket_create(int domain, int type)
{
socket_startup();
return socket(domain, type, 0);
}
void proc_0(void * params)
{
int fd_listen;
fd_listen = socket_create(1, SOCK_STREAM);
...
}
_beginthread(proc_0, 0, 0);
_beginthread(proc_1, 0, 0);
_beginthread(proc_2, 0, 0);
三个线程并发,调用socket之前WSAStartup可能未执行!
对变量的访问加锁可解决这个问题
mutex.Lock();
if (bUseCount++ == 0) {
WSAStartup(wVersionRequested, &wsaData);
}
mutex.Unlock();
- 线程并发,用标志位同步时要小心
- 线程同步(标志位看做成共享资源)
- 小心C++流的标志位
- 单片机在清除标志位时不要用位操作
- Java之【线程通信】--标志位练习
- 同步时间服务器要小心
- 并发编程<二>线程中断和线程中断标志
- Java线程同步于并发
- 多线程并发之线程同步
- Java并发之线程同步
- 位标志
- 标志位
- 标志位
- 标志位
- 线程、线程池、并发、同步、异步、锁
- Java之【线程通信】--标志位练习2
- 记一次C++线程函数使用标志位的经历
- 标志寄存器及其标志位
- struts,ajax乱码解决方案
- Invoke-Expression 帮助信息
- 在VC中链接动态链接库(DLL)的方法
- 要用功了!
- 信息服务学院--网络社
- 线程并发,用标志位同步时要小心
- 转:分享一下 javascript 在表格之间自由拖动列!
- Asp.net完美日历控件,支持FireFox,IE7(AjaxControlToolKit.Calendar)中文版
- Asp.net中动态在中加入Scrpit标签
- 去除图片链接边框及其链接虚线
- 用SetProcessAffinityMask为进程指定CPU
- 【转】小技巧教你攻破面试关
- 公主小妹第8集剧情介绍
- 越狱第三季第6集在线观看