i*i
2 楼
s*g
3 楼
两块SLI用了大半年了,后来发现一块跑SC2也没什么问题,想local cl出一块。
卡很干净,附件盒子说明书都有,还有一年多保修,能卖多少钱呢?没什么概念,$50
?
卡很干净,附件盒子说明书都有,还有一年多保修,能卖多少钱呢?没什么概念,$50
?
g*t
4 楼
我们组每年卖x亿的量的嵌入式CPU
出过不少事故
我多年前也贡献过几行ROM code
理论上,你那个问题是没有答案的
因为你没写清楚while loop里面干啥了
也没说明白别的线程在干啥
你要是while loop里证明黎曼猜想呢?自己按按钮呢?改flag呢?...
实践上,
要先查自己应用的uncertainty sources
才能真正决定怎么办好
一般人就用atomic完事
出过不少事故
我多年前也贡献过几行ROM code
理论上,你那个问题是没有答案的
因为你没写清楚while loop里面干啥了
也没说明白别的线程在干啥
你要是while loop里证明黎曼猜想呢?自己按按钮呢?改flag呢?...
实践上,
要先查自己应用的uncertainty sources
才能真正决定怎么办好
一般人就用atomic完事
O*e
5 楼
Title:Animal models of IBD: linkage to human disease
Journal: Current Opinion in Pharmacology
Volume 10, Issue 5, October 2010, Pages 578-587
Thanks in advance!!
Journal: Current Opinion in Pharmacology
Volume 10, Issue 5, October 2010, Pages 578-587
Thanks in advance!!
l*3
6 楼
我很快。。。我不知道。。。
i*i
7 楼
Y*Z
10 楼
YOUR E-MAIL
s*i
12 楼
上面视频还没看。
但是从降魔篇感觉他痛苦过。有一种大彻大悟后的悲悯。
但是从降魔篇感觉他痛苦过。有一种大彻大悟后的悲悯。
c*e
14 楼
bihai这么做,逻辑上有问题。
UI按钮到底想让這個while loop运行几次?一次还是250次?运行多少次是根据什么来
定的?
确实,要看while loop里面到底要运行什么东西。
发信人: bihai (学得不好), 信区: Programming
标 题: 用volatile退出线程对不对?(C++)
发信站: BBS 未名空间站 (Sun Jul 9 06:49:16 2017, 美东)
网上很多说volatile和线程就没有关系。
我现在计划在线程里面
volatile bool quit=false;
void worker(){
while(!quit){
...
}
}
然后在一个UI的按钮那里
quit=true;
这样对不对?
【在 g****t 的大作中提到】
: 我们组每年卖x亿的量的嵌入式CPU
: 出过不少事故
: 我多年前也贡献过几行ROM code
: 理论上,你那个问题是没有答案的
: 因为你没写清楚while loop里面干啥了
: 也没说明白别的线程在干啥
: 你要是while loop里证明黎曼猜想呢?自己按按钮呢?改flag呢?...
: 实践上,
: 要先查自己应用的uncertainty sources
: 才能真正决定怎么办好
UI按钮到底想让這個while loop运行几次?一次还是250次?运行多少次是根据什么来
定的?
确实,要看while loop里面到底要运行什么东西。
发信人: bihai (学得不好), 信区: Programming
标 题: 用volatile退出线程对不对?(C++)
发信站: BBS 未名空间站 (Sun Jul 9 06:49:16 2017, 美东)
网上很多说volatile和线程就没有关系。
我现在计划在线程里面
volatile bool quit=false;
void worker(){
while(!quit){
...
}
}
然后在一个UI的按钮那里
quit=true;
这样对不对?
【在 g****t 的大作中提到】
: 我们组每年卖x亿的量的嵌入式CPU
: 出过不少事故
: 我多年前也贡献过几行ROM code
: 理论上,你那个问题是没有答案的
: 因为你没写清楚while loop里面干啥了
: 也没说明白别的线程在干啥
: 你要是while loop里证明黎曼猜想呢?自己按按钮呢?改flag呢?...
: 实践上,
: 要先查自己应用的uncertainty sources
: 才能真正决定怎么办好
w*0
16 楼
看标题就心碎呀.好喜欢星爷哦.
d*a
18 楼
bihai的代码,UI进程设置一个flag变量,计算进程读到flag的变化后就退出了,确实
是用volatile就够了。
这种情况,最常见的是用IPC机制,简单可靠,也不需要关心下面的nasty的细节。IPC
的性能开销大一些,但计算进程都要退出了,这里没有性能上的问题。
【在 g****t 的大作中提到】
: 我们组每年卖x亿的量的嵌入式CPU
: 出过不少事故
: 我多年前也贡献过几行ROM code
: 理论上,你那个问题是没有答案的
: 因为你没写清楚while loop里面干啥了
: 也没说明白别的线程在干啥
: 你要是while loop里证明黎曼猜想呢?自己按按钮呢?改flag呢?...
: 实践上,
: 要先查自己应用的uncertainty sources
: 才能真正决定怎么办好
是用volatile就够了。
这种情况,最常见的是用IPC机制,简单可靠,也不需要关心下面的nasty的细节。IPC
的性能开销大一些,但计算进程都要退出了,这里没有性能上的问题。
【在 g****t 的大作中提到】
: 我们组每年卖x亿的量的嵌入式CPU
: 出过不少事故
: 我多年前也贡献过几行ROM code
: 理论上,你那个问题是没有答案的
: 因为你没写清楚while loop里面干啥了
: 也没说明白别的线程在干啥
: 你要是while loop里证明黎曼猜想呢?自己按按钮呢?改flag呢?...
: 实践上,
: 要先查自己应用的uncertainty sources
: 才能真正决定怎么办好
c*y
19 楼
不锈钢
i*i
20 楼
刘德华比星爷年龄还大, 为啥星爷看起来老多了?
a*g
21 楼
local好出么
我们这乡下,恐怕不好卖阿
220能卖几个钱
我们这乡下,恐怕不好卖阿
220能卖几个钱
g*t
22 楼
我喜欢用具体的例子代替不可判定情况的出现。
咱们假设bihai那个loop里面有一段是穷举黎曼猜想,
根据分支来调用OS别的硬件部分.
那这个问题是没办法回答什么是最好的办法了。
所以可能还是要明确那几路不确定性才行。
: bihai的代码,UI进程设置一个flag变量,计算进程读到flag的变化后就退出了
,确实
: 是用volatile就够了。
: 这种情况,最常见的是用IPC机制,简单可靠,也不需要关心下面的nasty的细节
。IPC
: 的性能开销大一些,但计算进程都要退出了,这里没有性能上的问题。
【在 d***a 的大作中提到】
: bihai的代码,UI进程设置一个flag变量,计算进程读到flag的变化后就退出了,确实
: 是用volatile就够了。
: 这种情况,最常见的是用IPC机制,简单可靠,也不需要关心下面的nasty的细节。IPC
: 的性能开销大一些,但计算进程都要退出了,这里没有性能上的问题。
咱们假设bihai那个loop里面有一段是穷举黎曼猜想,
根据分支来调用OS别的硬件部分.
那这个问题是没办法回答什么是最好的办法了。
所以可能还是要明确那几路不确定性才行。
: bihai的代码,UI进程设置一个flag变量,计算进程读到flag的变化后就退出了
,确实
: 是用volatile就够了。
: 这种情况,最常见的是用IPC机制,简单可靠,也不需要关心下面的nasty的细节
。IPC
: 的性能开销大一些,但计算进程都要退出了,这里没有性能上的问题。
【在 d***a 的大作中提到】
: bihai的代码,UI进程设置一个flag变量,计算进程读到flag的变化后就退出了,确实
: 是用volatile就够了。
: 这种情况,最常见的是用IPC机制,简单可靠,也不需要关心下面的nasty的细节。IPC
: 的性能开销大一些,但计算进程都要退出了,这里没有性能上的问题。
d*2
23 楼
这点压力小意思,啥都行。
i*i
24 楼
周星星的头发怎么花白如斯啊
f*t
25 楼
就说$90 OBO就行了,让买家他们自己还价
d*a
26 楼
把bihai的代码重写一下会看得清楚些。
void worker(){
while(true){
// check quit flag
if (quit)
return;
// start/continue the computation
...
}
}
从结构上说,其实并没有什么不确定的地方。UI thread只改变quit变量,并不改变其
它的共享变量。
【在 g****t 的大作中提到】
: 我喜欢用具体的例子代替不可判定情况的出现。
: 咱们假设bihai那个loop里面有一段是穷举黎曼猜想,
: 根据分支来调用OS别的硬件部分.
: 那这个问题是没办法回答什么是最好的办法了。
: 所以可能还是要明确那几路不确定性才行。
:
:
: bihai的代码,UI进程设置一个flag变量,计算进程读到flag的变化后就退出了
: ,确实
:
: 是用volatile就够了。
:
: 这种情况,最常见的是用IPC机制,简单可靠,也不需要关心下面的nasty的细节
void worker(){
while(true){
// check quit flag
if (quit)
return;
// start/continue the computation
...
}
}
从结构上说,其实并没有什么不确定的地方。UI thread只改变quit变量,并不改变其
它的共享变量。
【在 g****t 的大作中提到】
: 我喜欢用具体的例子代替不可判定情况的出现。
: 咱们假设bihai那个loop里面有一段是穷举黎曼猜想,
: 根据分支来调用OS别的硬件部分.
: 那这个问题是没办法回答什么是最好的办法了。
: 所以可能还是要明确那几路不确定性才行。
:
:
: bihai的代码,UI进程设置一个flag变量,计算进程读到flag的变化后就退出了
: ,确实
:
: 是用volatile就够了。
:
: 这种情况,最常见的是用IPC机制,简单可靠,也不需要关心下面的nasty的细节
l*2
27 楼
哈哈,高压锅蒸东西,头次听说
完了来报告一下
完了来报告一下
C*g
28 楼
失去了才知道失去了什么。
g*t
30 楼
可能会有看不见的OS控制的中断进来吧?
例如ADC读数据什么的。
他那几个省略号也可能再查一次quit什么的
: 把bihai的代码重写一下会看得清楚些。
: void worker(){
: while(true){
: // check quit flag
: if (quit)
: return;
: // start/continue the computation
: ...
: }
: }
【在 d***a 的大作中提到】
: 把bihai的代码重写一下会看得清楚些。
: void worker(){
: while(true){
: // check quit flag
: if (quit)
: return;
: // start/continue the computation
: ...
: }
: }
例如ADC读数据什么的。
他那几个省略号也可能再查一次quit什么的
: 把bihai的代码重写一下会看得清楚些。
: void worker(){
: while(true){
: // check quit flag
: if (quit)
: return;
: // start/continue the computation
: ...
: }
: }
【在 d***a 的大作中提到】
: 把bihai的代码重写一下会看得清楚些。
: void worker(){
: while(true){
: // check quit flag
: if (quit)
: return;
: // start/continue the computation
: ...
: }
: }
d*a
33 楼
中断和读I/O的behavior是一样的吧,不管quit是volatile还是atomic类型。
再查一次quit是不要紧的。处理器的内存模型,必须保证单机访问内存的一致性,不会
说读quit拿到新值后,再读一次却拿到老值。
回到开始,我同意你说的原则,与性能无关的代码,应该越简单越好。对bihai的代码
来说,不管用volatile还是atomic类型的flag,都牵涉到硬件和系统底层的细节;用
IPC机制,更简单明了。在volatile和atomic之间,拿不准的时候应该用atomic,这也
是general guideline。但C++支持atomic,C并不支持,要用volatile再手动插入
memory barrier指令。
【在 g****t 的大作中提到】
: 可能会有看不见的OS控制的中断进来吧?
: 例如ADC读数据什么的。
: 他那几个省略号也可能再查一次quit什么的
:
:
: 把bihai的代码重写一下会看得清楚些。
:
: void worker(){
:
: while(true){
:
: // check quit flag
:
: if (quit)
:
: return;
再查一次quit是不要紧的。处理器的内存模型,必须保证单机访问内存的一致性,不会
说读quit拿到新值后,再读一次却拿到老值。
回到开始,我同意你说的原则,与性能无关的代码,应该越简单越好。对bihai的代码
来说,不管用volatile还是atomic类型的flag,都牵涉到硬件和系统底层的细节;用
IPC机制,更简单明了。在volatile和atomic之间,拿不准的时候应该用atomic,这也
是general guideline。但C++支持atomic,C并不支持,要用volatile再手动插入
memory barrier指令。
【在 g****t 的大作中提到】
: 可能会有看不见的OS控制的中断进来吧?
: 例如ADC读数据什么的。
: 他那几个省略号也可能再查一次quit什么的
:
:
: 把bihai的代码重写一下会看得清楚些。
:
: void worker(){
:
: while(true){
:
: // check quit flag
:
: if (quit)
:
: return;
g*t
35 楼
赞总结。
十个字
: 中断和读I/O的behavior是一样的吧,不管quit是volatile还是atomic类型。
: 再查一次quit是不要紧的。处理器的内存模型,必须保证单机访问内存的一致性
,不会
: 说读quit拿到新值后,再读一次却拿到老值。
: 回到开始,我同意你说的原则,与性能无关的代码,应该越简单越好。对bihai
的代码
: 来说,不管用volatile还是atomic类型的flag,都牵涉到硬件和系统底层的细节
;用
: IPC机制,更简单明了。在volatile和atomic之间,拿不准的时候应该用atomic
,这也
: 是general guideline。但C 支持atomic,C并不支持,要用volatile再手动插入
: memory barrier指令。
【在 d***a 的大作中提到】
: 中断和读I/O的behavior是一样的吧,不管quit是volatile还是atomic类型。
: 再查一次quit是不要紧的。处理器的内存模型,必须保证单机访问内存的一致性,不会
: 说读quit拿到新值后,再读一次却拿到老值。
: 回到开始,我同意你说的原则,与性能无关的代码,应该越简单越好。对bihai的代码
: 来说,不管用volatile还是atomic类型的flag,都牵涉到硬件和系统底层的细节;用
: IPC机制,更简单明了。在volatile和atomic之间,拿不准的时候应该用atomic,这也
: 是general guideline。但C++支持atomic,C并不支持,要用volatile再手动插入
: memory barrier指令。
十个字
: 中断和读I/O的behavior是一样的吧,不管quit是volatile还是atomic类型。
: 再查一次quit是不要紧的。处理器的内存模型,必须保证单机访问内存的一致性
,不会
: 说读quit拿到新值后,再读一次却拿到老值。
: 回到开始,我同意你说的原则,与性能无关的代码,应该越简单越好。对bihai
的代码
: 来说,不管用volatile还是atomic类型的flag,都牵涉到硬件和系统底层的细节
;用
: IPC机制,更简单明了。在volatile和atomic之间,拿不准的时候应该用atomic
,这也
: 是general guideline。但C 支持atomic,C并不支持,要用volatile再手动插入
: memory barrier指令。
【在 d***a 的大作中提到】
: 中断和读I/O的behavior是一样的吧,不管quit是volatile还是atomic类型。
: 再查一次quit是不要紧的。处理器的内存模型,必须保证单机访问内存的一致性,不会
: 说读quit拿到新值后,再读一次却拿到老值。
: 回到开始,我同意你说的原则,与性能无关的代码,应该越简单越好。对bihai的代码
: 来说,不管用volatile还是atomic类型的flag,都牵涉到硬件和系统底层的细节;用
: IPC机制,更简单明了。在volatile和atomic之间,拿不准的时候应该用atomic,这也
: 是general guideline。但C++支持atomic,C并不支持,要用volatile再手动插入
: memory barrier指令。
b*i
39 楼
UI按钮是让线程优美退出。本来这个while是一直运行的。
具体的例子,比如这个线程是一个lua的bytecode解释程序,那么while的条件就是看看
有没有下一个bytecode了,或者是不是要退出了。如果没有其他的代码了,或者要退出
了,这个解释程序的线程就退出。这个UI的按钮就是告诉线程在还有bytecode的代码的
时候就退出。
void luaInterpreter(...){
while(!quit && hasNextByteCode()){
processNextByteCode();
}
...
}
quit变量和Lua的解释程序的过程没有任何关系。所以我觉得reordering在这个应用里
面是没有关系的。另外bool在一个线程里写其他里读也不用保护。就剩下cache
coherence问题了。好像没有人提出过。
【在 c*********e 的大作中提到】
: bihai这么做,逻辑上有问题。
: UI按钮到底想让這個while loop运行几次?一次还是250次?运行多少次是根据什么来
: 定的?
: 确实,要看while loop里面到底要运行什么东西。
: 发信人: bihai (学得不好), 信区: Programming
: 标 题: 用volatile退出线程对不对?(C++)
: 发信站: BBS 未名空间站 (Sun Jul 9 06:49:16 2017, 美东)
: 网上很多说volatile和线程就没有关系。
: 我现在计划在线程里面
: volatile bool quit=false;
具体的例子,比如这个线程是一个lua的bytecode解释程序,那么while的条件就是看看
有没有下一个bytecode了,或者是不是要退出了。如果没有其他的代码了,或者要退出
了,这个解释程序的线程就退出。这个UI的按钮就是告诉线程在还有bytecode的代码的
时候就退出。
void luaInterpreter(...){
while(!quit && hasNextByteCode()){
processNextByteCode();
}
...
}
quit变量和Lua的解释程序的过程没有任何关系。所以我觉得reordering在这个应用里
面是没有关系的。另外bool在一个线程里写其他里读也不用保护。就剩下cache
coherence问题了。好像没有人提出过。
【在 c*********e 的大作中提到】
: bihai这么做,逻辑上有问题。
: UI按钮到底想让這個while loop运行几次?一次还是250次?运行多少次是根据什么来
: 定的?
: 确实,要看while loop里面到底要运行什么东西。
: 发信人: bihai (学得不好), 信区: Programming
: 标 题: 用volatile退出线程对不对?(C++)
: 发信站: BBS 未名空间站 (Sun Jul 9 06:49:16 2017, 美东)
: 网上很多说volatile和线程就没有关系。
: 我现在计划在线程里面
: volatile bool quit=false;
c*e
41 楼
while(!quit && hasNextByteCode()){
這個!quit && hasNextByteCode()是atomic的吗?
【在 b***i 的大作中提到】
: UI按钮是让线程优美退出。本来这个while是一直运行的。
: 具体的例子,比如这个线程是一个lua的bytecode解释程序,那么while的条件就是看看
: 有没有下一个bytecode了,或者是不是要退出了。如果没有其他的代码了,或者要退出
: 了,这个解释程序的线程就退出。这个UI的按钮就是告诉线程在还有bytecode的代码的
: 时候就退出。
: void luaInterpreter(...){
: while(!quit && hasNextByteCode()){
: processNextByteCode();
: }
: ...
這個!quit && hasNextByteCode()是atomic的吗?
【在 b***i 的大作中提到】
: UI按钮是让线程优美退出。本来这个while是一直运行的。
: 具体的例子,比如这个线程是一个lua的bytecode解释程序,那么while的条件就是看看
: 有没有下一个bytecode了,或者是不是要退出了。如果没有其他的代码了,或者要退出
: 了,这个解释程序的线程就退出。这个UI的按钮就是告诉线程在还有bytecode的代码的
: 时候就退出。
: void luaInterpreter(...){
: while(!quit && hasNextByteCode()){
: processNextByteCode();
: }
: ...
k*u
42 楼
瓷的,但不能是骨瓷那种薄的,得厚瓷器
k*u
44 楼
瓷的,但不能是骨瓷那种薄的,得厚瓷器
g*t
49 楼
我要是有人中断后,读你这个quit呢?
如果我的中断是快速硬件来的。例如电池没电了
读数据备份。
没有atomic, i = 1这句话
都未完成,硬件可能就读了。硬件读的信号
如果足够快,那在它的眼里,你这个变量的对应的
内存值就是不稳定的。
: 我就是想问问到底错在哪
: 其实我觉得我这种情况用volatile没错,或者大家提到的memory barrier
和lock
都不是
: 问题。大多数情况在多线程下用atomic,但是这个特殊的情况有什么问题
还没有
人说清
: 楚。
【在 b***i 的大作中提到】
: 我就是想问问到底错在哪
: 其实我觉得我这种情况用volatile没错,或者大家提到的memory barrier和lock都不是
: 问题。大多数情况在多线程下用atomic,但是这个特殊的情况有什么问题还没有人说清
: 楚。
如果我的中断是快速硬件来的。例如电池没电了
读数据备份。
没有atomic, i = 1这句话
都未完成,硬件可能就读了。硬件读的信号
如果足够快,那在它的眼里,你这个变量的对应的
内存值就是不稳定的。
: 我就是想问问到底错在哪
: 其实我觉得我这种情况用volatile没错,或者大家提到的memory barrier
和lock
都不是
: 问题。大多数情况在多线程下用atomic,但是这个特殊的情况有什么问题
还没有
人说清
: 楚。
【在 b***i 的大作中提到】
: 我就是想问问到底错在哪
: 其实我觉得我这种情况用volatile没错,或者大家提到的memory barrier和lock都不是
: 问题。大多数情况在多线程下用atomic,但是这个特殊的情况有什么问题还没有人说清
: 楚。
w*g
51 楼
你理解没错,我给你endorse了: bihai这个volatile用得没错。
我们卖弄学问也希望你理解:)
:我就是想问问到底错在哪
:
我们卖弄学问也希望你理解:)
:我就是想问问到底错在哪
:
b*i
55 楼
这怎么还需要完整地程序,就是一个目的不行吗?
比如,计算矩阵乘法,需要80000x20000的自乘,可能需要很久吧。比如需要1小时。那
么,主程序有一个按钮,写着“开始”,还有一个本来是灰色的,写着“终止”
开始后,UI的函数就生成一个线程来执行乘法。可能是1个线程,也可能是多个。算了
20分钟,程序操作员发现有错误,需要终止计算重新开始,于是点击“终止”。当然,
线程们开始后这个“终止”按钮就不是灰色的了。
那么,此时,终止的UI函数就设置这个bool变量quit为真。然后个线程看到后就结束。
线程内部的乘法要经常查看quit变量。虽然不是while,但是就是那个意思。
for(rowA=0;rowA<20000;rowA++) {
for(rowB=0;rowB<20000;rowB++){
sum=0;
for(i=0;i<80000;i++)
sum+=A[rowA][i]*B[rowB][i];//A*B'
C[rowA][rowB]=sum;
}
if (quit)
break;
}
【在 c*********e 的大作中提到】
: 你要把完整的程序贴上来,才能对症下药。你这样遮遮掩掩的,没人能帮你。
比如,计算矩阵乘法,需要80000x20000的自乘,可能需要很久吧。比如需要1小时。那
么,主程序有一个按钮,写着“开始”,还有一个本来是灰色的,写着“终止”
开始后,UI的函数就生成一个线程来执行乘法。可能是1个线程,也可能是多个。算了
20分钟,程序操作员发现有错误,需要终止计算重新开始,于是点击“终止”。当然,
线程们开始后这个“终止”按钮就不是灰色的了。
那么,此时,终止的UI函数就设置这个bool变量quit为真。然后个线程看到后就结束。
线程内部的乘法要经常查看quit变量。虽然不是while,但是就是那个意思。
for(rowA=0;rowA<20000;rowA++) {
for(rowB=0;rowB<20000;rowB++){
sum=0;
for(i=0;i<80000;i++)
sum+=A[rowA][i]*B[rowB][i];//A*B'
C[rowA][rowB]=sum;
}
if (quit)
break;
}
【在 c*********e 的大作中提到】
: 你要把完整的程序贴上来,才能对症下药。你这样遮遮掩掩的,没人能帮你。
w*g
57 楼
我再给你最后来一击:
#include
void loop_on_atomic (std::atomic *p) {
for (;;) {
if (*p) break;
}
}
g++ -std=c++11 -o xxx.s -S -O3 xxx.cpp
_Z14loop_on_atomicPSt6atomicIiE:
.LFB325:
.cfi_startproc
.p2align 4,,10
.p2align 3
.L2:
movl (%rdi), %eax
testl %eax, %eax
je .L2
rep ret
如果只是读取基本类型,atomic没有任何overhead啊。
咱move on吧。
【在 b***i 的大作中提到】
: 这怎么还需要完整地程序,就是一个目的不行吗?
: 比如,计算矩阵乘法,需要80000x20000的自乘,可能需要很久吧。比如需要1小时。那
: 么,主程序有一个按钮,写着“开始”,还有一个本来是灰色的,写着“终止”
: 开始后,UI的函数就生成一个线程来执行乘法。可能是1个线程,也可能是多个。算了
: 20分钟,程序操作员发现有错误,需要终止计算重新开始,于是点击“终止”。当然,
: 线程们开始后这个“终止”按钮就不是灰色的了。
: 那么,此时,终止的UI函数就设置这个bool变量quit为真。然后个线程看到后就结束。
: 线程内部的乘法要经常查看quit变量。虽然不是while,但是就是那个意思。
: for(rowA=0;rowA<20000;rowA++) {
: for(rowB=0;rowB<20000;rowB++){
#include
void loop_on_atomic (std::atomic
for (;;) {
if (*p) break;
}
}
g++ -std=c++11 -o xxx.s -S -O3 xxx.cpp
_Z14loop_on_atomicPSt6atomicIiE:
.LFB325:
.cfi_startproc
.p2align 4,,10
.p2align 3
.L2:
movl (%rdi), %eax
testl %eax, %eax
je .L2
rep ret
如果只是读取基本类型,atomic没有任何overhead啊。
咱move on吧。
【在 b***i 的大作中提到】
: 这怎么还需要完整地程序,就是一个目的不行吗?
: 比如,计算矩阵乘法,需要80000x20000的自乘,可能需要很久吧。比如需要1小时。那
: 么,主程序有一个按钮,写着“开始”,还有一个本来是灰色的,写着“终止”
: 开始后,UI的函数就生成一个线程来执行乘法。可能是1个线程,也可能是多个。算了
: 20分钟,程序操作员发现有错误,需要终止计算重新开始,于是点击“终止”。当然,
: 线程们开始后这个“终止”按钮就不是灰色的了。
: 那么,此时,终止的UI函数就设置这个bool变量quit为真。然后个线程看到后就结束。
: 线程内部的乘法要经常查看quit变量。虽然不是while,但是就是那个意思。
: for(rowA=0;rowA<20000;rowA++) {
: for(rowB=0;rowB<20000;rowB++){
Y*m
82 楼
报告大家一个好消息, 我把盘子(Corningware 就像这个白盘子 http://images.bizrate.com/resize?sq=500&uid=1718297723 ), 架在
高压锅的铁篦子上(人家高压锅带的), 蒸25分钟, 么事儿没有. 没炸,
也没化, 排骨也熟了, 那个嫩啊... :)
高压锅的铁篦子上(人家高压锅带的), 蒸25分钟, 么事儿没有. 没炸,
也没化, 排骨也熟了, 那个嫩啊... :)
l*3
83 楼
恭喜啊贺喜啊。。。以后我也不害怕了。。。
http://images.bizrate.com/resize?sq=500&uid=1718297723 ), 架在
【在 Y******m 的大作中提到】
: 报告大家一个好消息, 我把盘子(Corningware 就像这个白盘子 http://images.bizrate.com/resize?sq=500&uid=1718297723 ), 架在
: 高压锅的铁篦子上(人家高压锅带的), 蒸25分钟, 么事儿没有. 没炸,
: 也没化, 排骨也熟了, 那个嫩啊... :)
http://images.bizrate.com/resize?sq=500&uid=1718297723 ), 架在
【在 Y******m 的大作中提到】
: 报告大家一个好消息, 我把盘子(Corningware 就像这个白盘子 http://images.bizrate.com/resize?sq=500&uid=1718297723 ), 架在
: 高压锅的铁篦子上(人家高压锅带的), 蒸25分钟, 么事儿没有. 没炸,
: 也没化, 排骨也熟了, 那个嫩啊... :)
F*t
84 楼
恭喜lz贺喜lz
【在 Y******m 的大作中提到】
: 报告大家一个好消息, 我把盘子(Corningware 就像这个白盘子 http://images.bizrate.com/resize?sq=500&uid=1718297723 ), 架在
: 高压锅的铁篦子上(人家高压锅带的), 蒸25分钟, 么事儿没有. 没炸,
: 也没化, 排骨也熟了, 那个嫩啊... :)
【在 Y******m 的大作中提到】
: 报告大家一个好消息, 我把盘子(Corningware 就像这个白盘子 http://images.bizrate.com/resize?sq=500&uid=1718297723 ), 架在
: 高压锅的铁篦子上(人家高压锅带的), 蒸25分钟, 么事儿没有. 没炸,
: 也没化, 排骨也熟了, 那个嫩啊... :)
相关阅读
baozi for papers寻roommate:aacr molecular targets and cancer therapeutics在Ecoli中表达真核细胞蛋白是否会有乙酰化或甲基化修饰?上个星期有人招工找Cardiac research in vivo 看过来请教养细胞的宝妈们,70%ethanol对胎儿有影响吗?请问用于研究growth cone的成熟细胞系都有那些介绍一个治愈糖尿病的方法 真实求审稿:cell biology, angiogenesis, vision research审稿机会---植物分子生物学如何筛选一个已知小分子化合物的receptor,或者反之SAS Programmer Opportunity求干细胞,心脏发育方向的审稿。。Mystery over obesity ‘fraud’老板辞职了,我能用正在做的数据申请grant吗?博士论文里的工作投稿的版权问题Paper Help!!Paper help, thanks a lot包子求文章===Paper Help===关于TBE缓冲液的配置