GÜNCELLEME: Jonathan Wakely nazik -pthread
derleyici ve bağlayıcı hem geçirilecek olan bir he says (below in comments) bu konuda baktı . Bunu yaparsam, kod gcc 4.7.2 ile de başarısız olmaz. Bu nedenle, cevabın, belirtilen e-postayla ilgisi yok. Teşekkürler Jonathan! İşte
bazı tırnak düz 2011 yılında yazılı gcc geliştirici
Jonathan Wakely's mail oluşturur şunlardır: Bizim std :: iplik :: id
Tüm karşılaştırma operatörlerini tanımsız davranış kullanan çünkü bizim thread :: id sadece bir pthread_t.
[...]
2) operatörü ==, POSIX geçersiz iplik kimlikleri için tanımsız olan pthread_equal diyor kullanır:
If either t1 or t2 are not valid thread IDs, the behavior is undefined.
iki yıl önce yazılmış olmasına rağmen Muhtemelen hala geçerli. Şu anda daha fazla bilgi için gcc codebase'i kontrol edemiyorum.
Garip . Aşağıdaki kodu:
#include <iostream>
#include <thread>
int main() {
std::cout << "Started" << std::endl;
std::thread::id nobody;
if (nobody != std::this_thread::get_id()) {
std::cout << "OK" << std::endl;
}
std::cout << "Finished" << std::endl;
}
üretir:
Started
OK
Finished
kontrol here. Ancak kodunuz 4.7.2 ile başarısız oluyor.
@Ali Belki onun libstdC++ güncelliğini yitirdi mi? –