|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 469826336 于 2019-9-17 19:31 编辑
这几天一直看陈硕的《linux多线程服务端编程》Eventloop类设计,其遵循one loop per thread原则,然后作者为了验证现有功能编写了两个实例,然后我就一直卡住在这了。
第一个实例是编写了s00/test1.cc,它在主线程和子线程分别创建一个Eventloop,然后程序正常运行退出。
第二个实例是编写了s00/test2.cc,它在主进程创建一个Eventlooop对象,却试图在另一个线程调用其Eventloop::loop(),程序会因断言而异常终止。
我的问题是:
1.第一个实例为什么子进程不会出错,子进程创建Eventloop对象时的t_loopInThisThread变量不应该不为空吗。然后我今天发现它创建子进程的方法是用的pthread_create,在网上搜了下发现和fork有区别,是因为这个区别导致的吗。
2.第二个实例报错是因为pthread_create出来的子进程和父进程共享全局变量g_loop的threadId_这个成员导致的吗。
如果有大佬愿意花时间解说下,小子在此感激不尽 ,下面是一些相关的源码。
Eventloop的部分实现
Eventloop::loop()的实现
test1.cc
test2.cc
|
|