由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 说到cpp11 和 围棋的对比
相关主题
这段code有啥问题?why use static function here?
一个Quant Developer的C++面试题Java banned operator overloading
问个指针array 的简单问题一个让我比较困惑的问题 c++ inheritence
用volatile退出线程对不对?(C++)请问一个implicit conversion的问题(C++)
c++ 里用到pointer 的地方我们尽可能用smart pointer吗?这个问题怎么答?
琢磨了一下c++ smart pointer,发现不能到处用one question about overloading operator delete
C++ namespace太混乱了C++ func overload question
有人用Boost.MPI吗?How to overload global new operator?
相关话题的讨论汇总
话题: barrier话题: cpp11话题: ptr话题: atomic话题: memory
进入Programming版参与讨论
1 (共1页)
t**r
发帖数: 3428
1
有了智能指针 std::function这些东西
我基本在代码里不用任何delete.也就是不用太担心内存
我可以轻松地写callback
我可以开心的用丰富的collection和operator overload
真的没必要上go.
z****e
发帖数: 54598
2
没有gc的语言都是耍流氓
a***n
发帖数: 538
3
shared_ptr真的挺慢的。
而且多线程用的时候,感觉需要memory barrier。
n*****3
发帖数: 1584
4
智能指针 can be thinking of another way to do GC/memory manager

【在 z****e 的大作中提到】
: 没有gc的语言都是耍流氓
T********i
发帖数: 2416
5
你这句评论就能看出来你还没搞懂memory barrier.

【在 a***n 的大作中提到】
: shared_ptr真的挺慢的。
: 而且多线程用的时候,感觉需要memory barrier。

a***n
发帖数: 538
6
http://www.reddit.com/r/cpp_questions/comments/2tzzz2/why_does_
以前的boost好像没有,如果不手动加一个barrier的话,会偶尔segfault。

【在 T********i 的大作中提到】
: 你这句评论就能看出来你还没搞懂memory barrier.
T********i
发帖数: 2416
7
C++ 11这个设计属于脑袋被驴踢了。
其实asm voltile memory用起来更爽。
但是不是所有的CPU体系结构都能用。
但是我只在乎X86,顶多加上arm。

【在 a***n 的大作中提到】
: http://www.reddit.com/r/cpp_questions/comments/2tzzz2/why_does_
: 以前的boost好像没有,如果不手动加一个barrier的话,会偶尔segfault。

a***n
发帖数: 538
8
撇开barrier不说,shared_ptr的计数器还是要被多个线程同时读写,就算是x86的原子
操作,效率也高不到哪里去。

【在 T********i 的大作中提到】
: C++ 11这个设计属于脑袋被驴踢了。
: 其实asm voltile memory用起来更爽。
: 但是不是所有的CPU体系结构都能用。
: 但是我只在乎X86,顶多加上arm。

T********i
发帖数: 2416
9
当你用到线程这个词的时候,你已经和高效率无缘了。

【在 a***n 的大作中提到】
: 撇开barrier不说,shared_ptr的计数器还是要被多个线程同时读写,就算是x86的原子
: 操作,效率也高不到哪里去。

T********i
发帖数: 2416
10
再给你透漏一点点。
1。原子操作本身就是硬件memory barrier。
2。原子操作都是写操作。读操作只要aligned都是原子的。primitive type。
3。效率高不到哪里去的言论纯属臆断。效率可以做到基本linear。取决于你怎么做。

【在 a***n 的大作中提到】
: 撇开barrier不说,shared_ptr的计数器还是要被多个线程同时读写,就算是x86的原子
: 操作,效率也高不到哪里去。

相关主题
琢磨了一下c++ smart pointer,发现不能到处用why use static function here?
C++ namespace太混乱了Java banned operator overloading
有人用Boost.MPI吗?一个让我比较困惑的问题 c++ inheritence
进入Programming版参与讨论
a***n
发帖数: 538
11
原子操作只对操作本身的变量有barrier,如果share_ptr的计数器本身和指向的变量之
间没有同步,最后一个指针释放的顺序会不对。以前boost实现肯定有问题,加了
barrier以后就不出错,所以我也没有仔细去研究是怎么回事。
两个线程同时操作同一个变量,L1怎么的都会被invalidate,效率怎么会高?

【在 T********i 的大作中提到】
: 再给你透漏一点点。
: 1。原子操作本身就是硬件memory barrier。
: 2。原子操作都是写操作。读操作只要aligned都是原子的。primitive type。
: 3。效率高不到哪里去的言论纯属臆断。效率可以做到基本linear。取决于你怎么做。

T********i
发帖数: 2416
12
我一年前说过:假如现在太阳突然熄灭,对地球一点影响都没有,为什么?
因为要过大约8分20秒以后才能影响到地球。
只有发生在光锥内事件需要遵循因果律。
你要用狭义相对论的方法论来理解memory barrier。

【在 a***n 的大作中提到】
: 原子操作只对操作本身的变量有barrier,如果share_ptr的计数器本身和指向的变量之
: 间没有同步,最后一个指针释放的顺序会不对。以前boost实现肯定有问题,加了
: barrier以后就不出错,所以我也没有仔细去研究是怎么回事。
: 两个线程同时操作同一个变量,L1怎么的都会被invalidate,效率怎么会高?

a***n
发帖数: 538
13
之所以用shared_ptr,就是为了不每次都要考虑什么时候释放内存。如果需要每次用的
时候都要想一想因果关系,还不如手动处理内存,或者用有gc的语言。

【在 T********i 的大作中提到】
: 我一年前说过:假如现在太阳突然熄灭,对地球一点影响都没有,为什么?
: 因为要过大约8分20秒以后才能影响到地球。
: 只有发生在光锥内事件需要遵循因果律。
: 你要用狭义相对论的方法论来理解memory barrier。

T********i
发帖数: 2416
14
shared_ptr用的是最简单的memory barrier。总纠结这个shared_ptr其实对你的理解没
有什么帮助。

【在 a***n 的大作中提到】
: 之所以用shared_ptr,就是为了不每次都要考虑什么时候释放内存。如果需要每次用的
: 时候都要想一想因果关系,还不如手动处理内存,或者用有gc的语言。

a***n
发帖数: 538
15
有本事你去实现一个不需要barrier的,我现在也不用c++了。

【在 T********i 的大作中提到】
: shared_ptr用的是最简单的memory barrier。总纠结这个shared_ptr其实对你的理解没
: 有什么帮助。

T********i
发帖数: 2416
16
所以我说你对barrier没完全理解也没错呀?
shared_ptr用的是atomic指令,也只能用atomic指令。atomic指令就是barrier。这些
都没错。
但是barrier不一定是atomic指令。

【在 a***n 的大作中提到】
: 有本事你去实现一个不需要barrier的,我现在也不用c++了。
a***n
发帖数: 538
17
atomic只是对计数器本身,对于指向的变量,最后一个指针消失之前,在两个进程中对
计数器和变量本身是没有因果关系的。这个帖子我也不想回了,你自己去想吧。

【在 T********i 的大作中提到】
: 所以我说你对barrier没完全理解也没错呀?
: shared_ptr用的是atomic指令,也只能用atomic指令。atomic指令就是barrier。这些
: 都没错。
: 但是barrier不一定是atomic指令。

w***x
发帖数: 105
18
1. atomic操作不太可能降低性能太多
2. boost的开发者不可能犯这么基础的错误,即使我没看boost的实现,但一个简单的
cmp & exchange也能很简单的解决问题
3.我从来没觉得这些c++智能指针能够真正解决内存泄露问题
1 (共1页)
进入Programming版参与讨论
相关主题
How to overload global new operator?c++ 里用到pointer 的地方我们尽可能用smart pointer吗?
operator overloading (C++)琢磨了一下c++ smart pointer,发现不能到处用
C++ Q89: function template and overloading (转载)C++ namespace太混乱了
C++ function template问题有人用Boost.MPI吗?
这段code有啥问题?why use static function here?
一个Quant Developer的C++面试题Java banned operator overloading
问个指针array 的简单问题一个让我比较困惑的问题 c++ inheritence
用volatile退出线程对不对?(C++)请问一个implicit conversion的问题(C++)
相关话题的讨论汇总
话题: barrier话题: cpp11话题: ptr话题: atomic话题: memory