बस प्रयोग के साथ CreateThread का प्रयोग करें, लेकिन मैं सोच रहा था अगर यह (संकलन के रूप में) इस कोड को काम करने के लिए संभव है:एक लैम्ब्डा
void main() {
int number = 5;
DWORD(*dontThreadOnMe)(PVOID) = [](PVOID data) {
int value = *(int*) data;
cout << value << endl;
cout << "This callback executed successsfully" << endl;
};
CreateThread(NULL, NULL, dontThreadOnMe, &number, NULL, NULL);
cin.get();
}
मैं इस सता संदेह है क्योंकि एक LPTHREAD_START_ROUTINE
कॉलबैक के लिए मानक हस्ताक्षर DWORD WINAPI Callback(PVOID)
मैं इसे जोड़ा गया (लेकिन व्याकरणिक रूप से अवैध) WINAPI
टैग के बिना संकलित करने में सक्षम नहीं होगा। जिसमें से बात कर रहे हैं, WINAPI
और CALLBACK
(WndProc
कहने के लिए) वास्तव में क्या हैं? मैंने कभी नहीं समझा है कि क्यों कुछ परिस्थितियों में आप एक समारोह पर कई विशेषताओं को प्राप्त कर सकते हैं।
'मुख्य' को वापसी प्रकार के रूप में 'int' होना आवश्यक है। आपको '__stdcall' lambda की भी आवश्यकता होगी, जो संभव नहीं है। आप इसे लैम्ब्डा (या कुछ भी) लेने के लिए लपेट सकते हैं, या फिर '' का उपयोग करें। –
chris
चूंकि आप स्पष्ट रूप से सी ++ 11 का उपयोग कर रहे हैं, क्यों न केवल 'std :: thread' का उपयोग करें जो पोर्टेबल है और प्लेटफार्म-विशिष्ट' CreateThread' की बजाय लैम्बडास के साथ अच्छी तरह से एकीकृत करता है? – syam
मैंने केवल सीखना शुरू कर दिया। लेकिन मैं उसमें देख लूंगा। धन्यवाद! – sircodesalot