Im sử dụng studio trực quan 2012 và C++ 11. Tôi không hiểu tại sao điều này không làm việc:std :: thread C++. Nhiều chủ đề hơn cùng một dữ liệu
void client_loop(bool &run)
{
while (run);
}
int main()
{
bool running = true;
std::thread t(&client_loop,std::ref(running));
running = false ;
t.join();
}
Trong trường hợp này, các vòng lặp của thread t
không bao giờ kết thúc nhưng tôi explicity thiết running
-false
. run
và running
có cùng vị trí. Tôi đã cố gắng đặt running
là một biến toàn cầu duy nhất nhưng không có gì xảy ra. Tôi đã cố gắng vượt qua một giá trị con trỏ quá nhưng không có gì.
Chủ đề sử dụng cùng một đống. Tôi thực sự không hiểu. Ai giúp tôi với?
Chương trình của bạn chấm dứt quá sớm để có thể quan sát bất kỳ điều gì thú vị. –
nope, tôi quên viết trong ví dụ này "t.join()" .. :) –
nếu bạn đặt 'running' là' volatile' thì sao? – didierc