मेरे पास निम्न परीक्षण प्रोग्राम है।`pthread_mutex_trylock 'के लिए अनिर्धारित संदर्भ
#include <iostream>
#include <cstdlib>
using namespace std;
pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER;
int main(int argc, char *argv[])
{
int iret;
iret = pthread_mutex_trylock(& mymutex);
cout << "Test2 !!! " << endl;
pthread_mutex_unlock(& mymutex);
return EXIT_SUCCESS;
}
अगर मैं मैं pthread_mutex_trylock के लिए अनसुलझे त्रुटि के लिए त्रुटि मिलती है pthread पुस्तकालय जोड़े बिना यह संकलन है, लेकिन केवल समारोह pthread_mutex_trylock के लिए।
यदि मैं pthread_mutex_trylock के साथ pthread_mutex_trylock को प्रतिस्थापित करता हूं तो प्रोग्राम संकलित और चलाया जाता है -lpthread * विकल्प के बिना भी अच्छी तरह से चलाया जाता है।
अगर मैं जोड़ने के संकलन के लिए -lpthraed विकल्प सभी अच्छी तरह से रन आदेशों यह अच्छी तरह से चलाएँ: $ जी ++ test2.c -ओ test2 -lpthread इस अनसुलझे चेतावनी दी है: $ जी ++ test2.c -ओ test2
उदाहरण त्रुटि उत्पादन: $ जी ++ test2.c -ओ test2 /tmp/ccU1bBdU.o: 'समारोह main': test2.c:(.text+0x11): undefined reference to
pthread_mutex_trylock में collect2: ld 1 से बाहर निकलें स्थिति लौटा
अगर मैं instructi की जगह पर iret = pthread_mutex_trylock (& mymutex);
iret = pthread_mutex_lock (& mymutex) के साथ; प्रोग्राम बिना किसी त्रुटि के संकलित और चलाता है, अगर संकलन कमांड पर pthread libarry नहीं जोड़ा गया है, तो मुझे पता है कि अगर मैंने -lpthread विकल्प का उपयोग नहीं किया है, तो मुझे अनसुलझा त्रुटि है, लेकिन मेरे पास ऐसा क्यों नहीं है अन्य pthread_ फ़ंक्शन के लिए भी अनसुलझा त्रुटि?
मैं फेडोरा पर जीसीसी 4.4.2 का उपयोग कर रहा 12
$ g++ --version
g++ (GCC) 4.4.2 20091222 (Red Hat 4.4.2-20)
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
कुछ ही pthread_mutex_trylock के लिए इस unreference के अर्थ के बारे में कुछ सुझाव है? मदद के लिए
धन्यवाद, एंज़ो
यह कुछ प्लेटफार्म-विशिष्ट व्यवहार हो सकता है, लेकिन आप भी परेशान क्यों हैं? आपको पर्थ्रेड से लिंक करना है, बस इसे करें। –
mybe मुझे अभी भी सीखने की इच्छा है :) – enzo2
फिर भी यह प्रश्न मेरी तरह की स्थिति में उपयोगी है, जहां 'pthread_mutex_lock()' को एक कॉल 'pthread_mutex_trylock()' द्वारा प्रतिस्थापित किया गया था जिससे चीजों को कोई स्पष्ट कारण नहीं तोड़ दिया गया। – foraidt