MyException - 我的异常网
当前位置:我的异常网» C++ » 奇技淫巧C++之方法代理,该如何解决

奇技淫巧C++之方法代理,该如何解决(4)

www.MyException.Cn  网友分享于:2015-08-26  浏览:53次

mark一下
有空在看
------解决方案--------------------
学习下...
------解决方案--------------------
mark mark...谢谢lz
------解决方案--------------------
跟在你后面顶,嘿嘿。
------解决方案--------------------
用一变能宏会更好吧。

比如现在有个函数 fun1

再做如下#define 

#define afun1(...) { \
//前面的处理
fun1(__VA_ARGS__);//执行fun1
//后面的处理
}

我觉得这样好。

------解决方案--------------------
楼主的解决方法,无论怎么说,都与优雅两个字相差太远了。

可以说,它浪费的程序员的时间比它节约的多。

这一组模板真的不如楼上那组宏好用。


to Cybergate()
windows肯定是不能取消线程的,因为它的进程开销太大。
至于unix下面,我正儿八经的写了这么多并行处理的程序,还没看出来哪种情况是一定要用线程,或者说用线程的解决方案会更好,unix下原本就没有线程。

------解决方案--------------------
取消线程,是个好办法~
------解决方案--------------------
上述的实现代码已经没什么神奇之处可言了.使用方法如下:
typedef vector <int> MyVector;
MyVector cont;
LockType lock;
typedef call_proxy <MyVector*, LockType, LockType::scoped_lock> proxy_type;
proxy_type cont_proxy(&cont, lock);
========================
楼主贴一下 LockType 的代码好吗? 我想不明白LockType::scoped_lock 在构造的时候是怎么加锁的?
------解决方案--------------------
谢谢楼主
------解决方案--------------------
回楼主关于多线程的问题:
多线程的好处确实是实实在在的,就在前两天,我们这一个程序员好兴致勃勃地要用多线程来改善性能,这对他来说是最最方便,门槛最低的改造了。不过在随后的几天受挫和煎熬中,他还是坚决的抛开多线程,改用异步非阻塞的方式来做了。
要说多核,早在多核概念炒作之前,unix程序员一直默默地在为数个乃至数十个CPU的服务器编写并发处理程序。

为什么许多人会喜欢多线程呢?因为他或者没有别的选择(例如windows下),或者没有足够的抽象能力来进行别的选择(例如搞不懂异步是怎么回事)
------解决方案--------------------
回:关于宏和楼主的实现谁好的问题


其实对于什么样的代码是真正简洁的,这一点要基于共同知识来判定。

例如早在STL在中国流行之前的时候,许多人即使对typedef vector <int> ::iterator ITER;这样的代码也会觉得十分费解,现在当STL成为一种通用的手法时,当时的问题也就不复存在了。

为什么许多情况下我都推荐用简明的宏来处理呢?
是因为在简单的情况下,简单的宏是人人都能方便的读懂的,复杂的宏当然不利于维护,可是事情到了需要复杂的宏时,更多的要考虑一下程序结构是不是有什么不对,而不是考虑如何用更精巧的方式来做一种貌似简洁的东西出来。

我想起曾经看过一篇关于C++中实现一个更 "好 "的min/max版本的文章,想必楼主也看过吧?
现在看来,最好的版本就是#define MAX(x,y) (x) > (y) ? (x) : (y)
而不是那些用模板、函数对象等精妙手法堆砌出来的东西。
------解决方案--------------------
to wingfiring
关于宏
就不再讨论了,我曾经和B.S讨论过宏,他也是坚决反对用宏的。不过事实胜于雄辩,无数的代码都已表明,宏还是有其一席之地的。

关于多线程
多线程其实质不在CreateThread/beginthread,CWinThread或者其他写法。而在于多个线程共享同一全局内存,竞争和临界区的使用,极大地增加了全局复杂度。
多线程由于太容易知道彼此内部状态,而没有自动进行封装,这使它成为Bug的滋生地。而产生了些Bug,并没有为它带来性能上的显著提高,因为它虽然没有了进程上下文切换的开销,但是锁定和解锁的成本显得太高了。
线程的使用如果遵循线程本地存储,那么它更像是共享内存的使用,而众所周知的各种进程间通讯的方式,共享内存是最不得已的选择。

当然,如果你仅仅局限在windows上,线程有时候可能是不得已的选择,因为windows的进程成本太大了。不过,对于网络应用程序来说,异步IO也是一个比线程优的选择。
当然,如果既局限在windows上,又是做客户端软件,那么上面这些当我没说。毕竟少数的线程不会带来效率的明显降低,并且线程少的话,肯定比异步IO的程序要好写一些
------解决方案--------------------
to oyd
你说的部分对

但是要想并发,除了多线程就是多进程,(异步io不是一般情况)

多进程肯定比多线程慢
因为多线程需要同步的地方,多进程也要,而且更慢,效率更低

良好的设计和构架可以降低同步的要求,但多进程可以使用的方法,多线程也可以

你说共享内存不好,是,的确不好

但是如果 多线程这个地方要等,多进程还是要等,除了要等,而且还要marshal,demarshal

所以多进程要慢

如果我没记错的话,从操作系统的演进历史来看,多线程明显是个高级东西

------解决方案--------------------
我们用的多线程,从其本质上来说,就是对异步IO的一个代替。
你说的并行计算,如果不考虑有IO问题的话,用串行是一样的,如果你要利用多处理的优势,为什么不用多进程呢,你单个进程的计算程序将是一个专一的,易于维护和理解的程序。

文章评论

 程序员的样子
程序员的样子
每天工作4小时的程序员
每天工作4小时的程序员
一个程序员的时间管理
一个程序员的时间管理
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
Java程序员必看电影
Java程序员必看电影
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员都该阅读的书
程序员都该阅读的书
我是如何打败拖延症的
我是如何打败拖延症的
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
老程序员的下场
老程序员的下场
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员应该关注的一些事儿
程序员应该关注的一些事儿
我的丈夫是个程序员
我的丈夫是个程序员
代码女神横空出世
代码女神横空出世
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
编程语言是女人
编程语言是女人
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员的鄙视链
程序员的鄙视链
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
鲜为人知的编程真相
鲜为人知的编程真相
为什么程序员都是夜猫子
为什么程序员都是夜猫子
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员必看的十大电影
程序员必看的十大电影
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
如何成为一名黑客
如何成为一名黑客
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
中美印日四国程序员比较
中美印日四国程序员比较
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序员和编码员之间的区别
程序员和编码员之间的区别
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有