मैंने ग्रहण में सी ++ 11 धागे के उदाहरण का परीक्षण करने की कोशिश की।सीडीटी/ग्रहण सी ++ 11 थ्रेड के साथ कैसे काम करें?
terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted'
मेरे प्रणाली: ubuntu + जीसीसी 4.7
कार्यक्रम: लेकिन मैं इस संदेश को जब कार्यक्रम चल रहा मिला
#include <iostream>
#include <thread>
void worker()
{
std::cout << "hello from worker" << std::endl;
}
int main(int argc, char **argv)
{
std::thread t(worker);
t.join();
}
... और हाँ, मैं डाल -std=c++11
और -pthread
अंदर C/C++ Build -> Settings -> Tool Settings -> Cross G++ Compiler -> Miscellaneous -> Other Flags
।
कोई टिप्पणी?
उन सेटिंग्स को "क्रॉस कंपाइलर" अनुभाग में रखने के लिए अजीब लग रहा है (लेकिन मुझे ग्रहण नहीं पता)। क्रैश दोहराया जा सकता है यदि '-pthread' ध्वज कमांड लाइन पर मौजूद नहीं है और आपके पास libstdC++ के अन्य संस्करण स्थापित हैं। तो सुनिश्चित करें कि ध्वज वास्तव में आपके कंपाइलर – Mat
पर पारित किया जा रहा है यह एक रनटाइम अपवाद है, इसलिए कोड सही ढंग से संकलित करता है। फिर भी मैं समझ नहीं पा रहा हूं कि किस मामले में यह अपवाद संदेश होना चाहिए ... – Klaim
@Klaim: अगर आप गलत libstdC++ के खिलाफ लिंक करते हैं तो यह त्रुटि आती है, जो तब हो सकती है यदि आपके पास इसके कई संस्करण स्थापित हैं और आप ' pthread' (या आपका जीसीसी इंस्टॉल borked है) – Mat