由于this问题的一部分未得到解决,我将其作为一个å•ç‹¬çš„问题:
#include<iostream>
#include<thread>
using namespace std;
void f2(double* ret) {
*ret=5.;
}
int main() {
double ret=0.;
thread t2(f2, &ret);
t2.join();
cout << "ret=" << ret << endl;
}
这个节目数æ®æ˜¯å¦å…费比赛?
对于新的C ++内å˜æ¨¡åž‹ï¼Œæ˜¯å¦æœ‰ä»»ä½•ä¿è¯ä»Žçº¿ç¨‹ret
访问å˜é‡t2
并且线程main
是åŒæ¥çš„?
我的æ„æ€æ˜¯ï¼Œå¦‚果程åºåœ¨åŒä¸€æ ¸å¿ƒä¸Šæ‰§è¡Œï¼Œå¾ˆæ˜Žæ˜¾t2
å’Œmain
的访问ä¸ä¼šå‘生冲çªã€‚
但是如果t2
å’Œmain
在ä¸åŒçš„æ ¸å¿ƒä¸Šæ‰§è¡Œä¼šæ€Žä¹ˆæ ·ï¼Ÿ
在main
继ç»æ‰§è¡Œä¹‹å‰ï¼Œæ˜¯å¦æœ‰ä¿è¯æ ¸å¿ƒç¼“å˜ä¼šåŒæ¥ï¼Ÿ
如果有人能æ供相åŒçš„å‚考资料,我会很感激。
谢谢。
ç”案 0 :(得分:5)
您的计划å…è´¹å‚åŠ æ•°æ®ç«žèµ›ã€‚ [thread.thread.member] / p5æ述了带有åŒæ¥æ®µè½çš„join():
åŒæ¥ï¼šç”±* this表示的线程的完æˆåŒæ¥ 用(1.10)相应的æˆåŠŸjoin()返回。 [注æ„:*上的æ“作ä¸åŒæ¥ã€‚ -endnote]
(1.10)指的是[intro.multithread]ï¼Œå®ƒæ˜¯ä¸€ä¸ªå¤ªé•¿è€Œæ— æ³•å¼•ç”¨çš„éƒ¨åˆ†ï¼Œä½†åœ¨æžå…¶è¯¦ç»†çš„情况下定义了çŸè¯â€œä¸Ž...åŒæ¥â€ã€‚
最新的工作è‰æ¡ˆæ˜¯N3225。