读书人

C++ 相关线程管理的2个疑问

发布时间: 2013-02-27 10:48:11 作者: rapoo

C++ 有关线程管理的2个疑问
/*1、我定义一个类PtheadManger来管理线程、 当我创建一个PtheadManger 对象时候构造函数调用一系列的成员函数会创建线程以及初始化
但是在线程的回调函数里面通过判断对象的成员变量 bool isfalse来知道线程是继续还是停止,线程的回调函数一定要是全局函数 所有我想把this传递给线程函数
_beginthread(AddRtptoDequeThread,0,(void *)this); 线程回调函数通过this来获取标示 这样可以吗?问题是可以传递这个this指针吗?
*/

/*
定义一个双端队列,一个线程在队列的尾部增加消息,一个线程判断队列是否为空之后再队列的首部获取消息;我想问这样的话不加锁,会有问题吗,
*/
[解决办法]
1、可以,指针就是这么方便啊;
2、应该需要加锁,你想啊,他里面也是维护一块内存,你不加锁,添加、删除都是操作内存,还是会乱啊,除非你用的那个容器明确说了“线程安全”;
[解决办法]
如果只是一读一写影响也不大,反正我从刚开始到现在用deque都是加锁的,无锁只是一个理想啊。:)
[解决办法]
1,BOOL GetExitCodeThread(
HANDLE hThread,
LPDWORD lpExitCode
);

如果 返回值lpExitCode 为常量 STILL_ACTIVE 则表示线程正在运行.
第一个参数是 线程的句柄这可以通过AfxBeginThread 的返回值 的m_hThread
属性获得.
2,利用线程处理数据,记得枷锁

[解决办法]
多注意下线程锁
[解决办法]
多线程得好好学学!

读书人网 >C++

热点推荐