微信号:C_programming

介绍:移动互联网支付技术和解决方案...

编译,性能

2014-05-23 00:24 jeffchen

话说前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的死锁问题,明天要填坑了

 
移动开发技术 更多文章 #推荐第一篇# 你问大家答 你问我答 实际小问题答案 抵挡不住的诱惑 新百伦3折包邮
猜您喜欢 Linux目录结构(Linux文件系统结构) 美团多渠道打包方案详解,速度快到白驹过隙 【陆勤荐文】R语言知识体系概览 十年前、十年后,剩下什么? 关于反爬虫,看这一篇就够了