সংকলন করার সময়-প্রসারিত পতাকাটির তাৎপর্য


143

বিভিন্ন মাল্টি থ্রেডেড সি এবং সি ++ প্রকল্পে আমি -pthreadপতাকাটি সংকলন এবং লিঙ্কিং উভয় পর্যায়েই প্রয়োগ করেছি যখন অন্যরা একেবারেই ব্যবহার করে না এবং কেবল পাস করে-lpthread লিঙ্কিং পর্যায়ে চলে যায়।

-pthreadপতাকাটি সংকলন ও সংযোগ স্থাপনের কোন বিপদ আছে - অর্থাত্ -pthreadআসলে কী করে ? আমি মূলত লিনাক্স প্ল্যাটফর্মগুলিতে আগ্রহী।

উত্তর:


107

চেষ্টা করুন:

gcc -dumpspecs | grep pthread

এবং যেটি শুরু হয় তার জন্য সন্ধান করুন %{pthread:

আমার কম্পিউটারে এর ফলে ফাইলগুলি সংকলিত হয় -D_REENTRANTএবং এর সাথে লিঙ্ক হয় -lpthread। অন্যান্য প্ল্যাটফর্মে, এটি পৃথক হতে পারে। -pthreadসর্বাধিক বহনযোগ্যতার জন্য ব্যবহার করুন ।

ব্যবহার _REENTRANT, গনুহ libc উপর, পথ কিছু libc হেডার কাজ পরিবর্তন। সুনির্দিষ্ট উদাহরণ হিসাবে, এটি errnoকোনও থ্রেড-লোকাল অবস্থান ফিরিয়ে আনে একটি ফাংশন কল করে।


3
এটি কেবল errnoসাধারণভাবে এবং প্রাকপ্রসেসিং নাও হতে পারে । আমি নিশ্চিত না যে এইচপিএল.পি. / টেকেরপোর্টস / ২০০৪ / এইচপিএল -২০০৪-২০৯.pdf নিবন্ধটি জিসিসি অপ্টিমাইজেশনের জন্য অনুশীলনে রয়েছে, তবে আমি নিশ্চিতভাবে সেখানে পর্যালোচনার গভীরতা দেখে মুগ্ধ হয়েছি।
পাস্কেল কুয়াক

2
আমি ভুল উদাহরণটি সঠিক বলে মনে করি না। এমনকি অজানা পতাকা বা _REENTRANT সংজ্ঞায়িত না করেও আমার এরনো। (গ্লিবসি ২.১০.১) এবং জিসিসি (এমডি 64.1.৪.১.১) এর্নো হ্যান্ডলিংয়ের জন্য ডায়নামিক কল উত্পন্ন করে এবং প্রতীক ঠিকানার সাথে লিঙ্ক দেয় না।
অ্যান্ডি রস

1
@ পাসল: লিঙ্কটির জন্য ধন্যবাদ। এই মুহুর্তে এটি আমার মাথার উপরে কিছুটা উপরে যায় তবে এটি মনে হয় যে কেন্দ্রীয় বিন্দুটি হ'ল থ্রেডিংটি কেবল "সজ্জিত" করা যায় না, পরিবর্তে মেমরির মডেলের অংশ হিসাবে এটি অবশ্যই নকশা করা উচিত। আমি যে তার সাথে একমত।
ক্রিস জেস্টার-ইয়াং

2
@ অ্যান্ডি - আপনার সিসির সংস্করণটি সরবরাহ করতে -D_REENTRANTবা -pthreadস্বয়ংক্রিয়ভাবে নির্মিত হতে পারে । সঙ্গে আপনার বিল্ড চালান g++ -vএবং এটা কি পরামিতি কম্পাইলার ফ্রন্ট-এন্ড আসলে হয় ক্ষণস্থায়ী সম্পর্কে আউটপুট অনেকটা ডাম্প হবে cc1plusএবং ld
টম

3
এখানে এখনও একটি প্রশ্নের উত্তর নেই: এখানে কি কোনও বিপদ সংশ্লেষের সাথে প্রবন্ধের পতাকার সাথে সংযোগ স্থাপন করছে না - অর্থাৎ -পথটি আসলে কী করে?
নাটেনহো

40

থেকে man gcc:

-pthread pthreads লাইব্রেরির সাথে মাল্টিথ্রেডিংয়ের জন্য সমর্থন যোগ করে। এই বিকল্পটি প্রিপ্রসেসর এবং লিঙ্কার উভয়ের জন্য পতাকা সেট করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.