
生命如歌 楼主
2015-07-07 08:49

话说前2天改了几百行代码,同事于是开始copy到公司的开发机上,开始编译. 错误竟然只有一个!但是那个错误查了好久.
原来报的错误是多次声明,结果把变量移到CPP后,同事在CPP里加上如下这段:
#ifndef xxxx_cpp
#define xxxx_cpp
int a;
...
#endif
而在头文件里加上了:
extern int a;
导致所有的进程都开心地编译过了.然而在运行的时候有些进程说a找不到了....
很顺利的是,新的多线程程序没有影响原来的进程,也就是说主线程看起来OK了,后面2天就是要跑通多线程了...
今天还遇到一个问题. 如果我的服务器A,每秒产生的数据是100MB,然后我要把这100MB的数据发送到remote机器。那么我A是用什么策略效率高呢?是A进程新加一个线程异步发?还是用一个进程B来发,而A和B之间用共享内存buffer。
这个问题我没有经验不知道答案。
不过考虑到服务器A上本身有可能是多进程的,那么我们的程序如果每个进程都要搞一个线程,那我们的程序也需要变成多线程了,而且线程数未定,这样比较麻烦,所以最后选择了后一种方法。
另外一个问题是,我们产生的数据是互相依赖的,所以我们不能做到分布式集群来处理生成的数据,于是选择单进程多线程了.
PS 刚刚那个多线程程序出现了epoll_wait nocancel的死锁问题,明天要填坑了
¥79.00¥179.00
¥98.00
¥398.00
¥199.00