উইন্ডোজে থ্রেড সমর্থন ছাড়াই কি জিসিসি মারা যাচ্ছে? [বন্ধ]


31

আমার কিছু মতামত দরকার জিসিসি সর্বদা খুব ভাল সংকলক ছিল, তবে সম্প্রতি এটি "আবেদন" হারাচ্ছে। আমি সবেমাত্র খুঁজে পেয়েছি যে উইন্ডোজ জিসিসিতে std::threadসমর্থন নেই, উইন্ডোজ ব্যবহারকারীদের অন্য সংকলক ব্যবহার করতে বাধ্য করা হয়েছে কারণ সবচেয়ে উত্তেজনাপূর্ণ বৈশিষ্ট্যটি এখনও অনুপস্থিত।

তবে সত্যিই কেন জিসিসির উইন্ডোজ অধীনে থ্রেড সমর্থন নেই? লাইসেন্স সমস্যা? এবিআইয়ের অসম্পূর্ণতা? (ভাল, ইতিমধ্যে মাল্টিথ্রেডিং ব্যবহার করে বেশ কয়েকটি ক্রস-প্ল্যাটফর্ম লাইব্রেরি রয়েছে: বুস্ট, পোকো, এসডিএল, ডাব্লু এক্সভিজেট ইত্যাদি) ইতিমধ্যে বিদ্যমান, এবং এমআইটি / লিবপং লাইসেন্স প্রাপ্ত কোডটি জিসিসি রিলিজের পরিবর্তে এই গর্তটি ফিট করার পক্ষে কি সহজ হবে না? কোন থ্রেড সমর্থন ছাড়া?)

সম্প্রতি, সংকলকের তুলনা দেখে জিসিসির অন্যান্য সংকলকগুলির ক্ষেত্রে সি ++ 11 বৈশিষ্ট্যগুলির বিস্তৃত সমর্থন রয়েছে, উইন্ডোজে এটি সত্য নয় কারণ আমাদের এখনও অ্যাটমিক্স, মিটেক্স এবং থ্রেডের অভাব রয়েছে: /

আমি এই বিষয়টি সম্পর্কে আরও জানতে চাই, তবে কেবলমাত্র আমি খুঁজে পেতে পারি লোকেরা সাহায্যের জন্য জিজ্ঞাসা করছে কারণ:

"থ্রেড" স্ট্যান্ডার্ড নেমস্পেসে বিদ্যমান নেই

টিকিট ট্র্যাকিং এবং জিসিসি / টিডিএম-জিসিসির মেইল ​​আলোচনার দিকে তাকানো, ২০০৯ সাল থেকে থ্রেড সাপোর্টের জন্য অনুরোধ ছিল 4 সম্ভবত ৪ বছর পরেও কোনও সমাধান হয়নি? আসলে কি হচ্ছে?


8
জিসিসি এখনও ভাল, আপনি সম্প্রতি যা খুঁজে পেয়েছেন তা নির্ধারণ করা যায় না।
ott--

1
আমি কেবল স্ট্যান্ড :: থ্রেড পছন্দ করেছি। এটি কার্যকর করার মতো কঠিন বৈশিষ্ট্য ছিল না। কেবলমাত্র ভেরিয়ডিক্স টেম্পলেটগুলি নিন এবং উদাহরণস্বরূপ এসডিএল থ্রেড এবং আপনি
স্টাড

12
আমি প্রায় গড় প্রোগ্রামারদের নির্ভরযোগ্য মাল্টি-থ্রেডেড অ্যাপ্লিকেশন লেখার অক্ষমতা দিয়ে প্রায় যুক্তি দেখাব, কোনও থ্রেড সমর্থন কোনও বোনাস নয় .....
ম্যাটনজ

3
আপনি লিবারারি সম্পর্কে অভিযোগ করছেন বিশেষত সংকলক নয়।
ওয়ার্লবেল

2
জিসিসি জনপ্রিয়, এটি সত্য। তবে আমি বলব না, এটি "সর্বদা একটি খুব ভাল সংকলক" ছিল। যুগে যুগে লোকেরা লিনাক্সে আইসিসি নিয়ে পরীক্ষা-নিরীক্ষা করছিল, কারণ জিসিসি উত্পাদিত ধীর এবং স্ফীত বাইনারিগুলির কারণে। ওটিওএইচ, সমস্ত বড় ওপেন সোর্স প্রকল্প আবার তাদের কোডের উইন্ডোজ সংস্করণটি সংকলন করতে ভিএস ব্যবহার করে, কারণ জিসিসি তুলনায় ধীরে ধীরে ফোলা উৎপন্ন করে।
15

উত্তর:


23

আমি বুঝতে পেরেছিলাম যে জিসিসি পক্ষে চলে যাচ্ছে কারণ এটি রক্ষণাবেক্ষণ করা লোকেরা কিছুটা দাম্ভিক হয়ে পড়েছে, এবং এখন এলএলভিএম এখানে এসেছে (এবং খুব ভাল) লোকেরা পা দিয়ে ভোট দিচ্ছে।

স্ল্যাশডট সি ++ 11 এর জন্য এলএলভিএম এর নতুন সমর্থন সম্পর্কে আলোচনা করেছিলেন । _মার্লিন বলেছেন:

ওহ, আমি মনে করি না যে কেউ এটিকে মন্দ বলে মনে করে, কেবল এটি উদারতার চেয়ে খাঁটি স্বার্থ। জিসিসির অভূতপূর্ব জনপ্রিয়তার কারণে তার রক্ষণাবেক্ষণকারীদের ব্যাপক ইগো বেড়েছে এবং মোটের মতো আচরণ করছে [ * *** ]। রেড হ্যাট এবং অ্যাপল তাদের গ্রহণযোগ্য প্যাচগুলি পেতে পারে তার চেয়ে দ্রুতগতিতে বাগগুলি প্রবর্তন করা হয় এবং বাগের প্রতিবেদনগুলি তত্ক্ষণাত না তাকানোর অভ্যাস রয়েছে এবং তারপরে এগুলি আসলে ঠিক না করেই নিষ্ক্রিয়তার কারণে এগুলি বন্ধ করে দেওয়া হয়

4 বছরের বিলম্ব সম্পর্কে আপনার পর্যবেক্ষণের সাথে কোন চিত্র রয়েছে।


আপনি gcc সহ নন-লিনাক্সের সংকলন সহ অন্যান্য সমস্যাগুলি চিহ্নিত করার জন্য বিকাশকারীদেরও খুঁজে পেতে পারেন ।

3
এটি কেবল এলএলভিএম নয়, ভিজ্যুয়াল স্টুডিও এক্সপ্রেস সংস্করণগুলি হ'ল আরেকটি কার্যকর, গ্র্যাটিস বিকল্প (প্রশ্নটি বিশেষত std::threadউইন্ডোজ সম্পর্কে যা ভিএস ২০১২ ই ই সমর্থিত)
ম্যাসাল্টার্স

1
খুব খারাপ ভিএস ২০১২ এর স্ট্যান্ড :: থ্রেডের সম্পূর্ণ সমর্থন নেই (যেমন কোনও thread_localভেরিয়েবল নেই)
আলরিকাই

আধুনিক যুগে এ কি আদৌ বদলে গেছে?
হাশিম

29

জিসিসির জনপ্রিয়তা এবং ব্যবহারযোগ্যতা প্রশ্নবিদ্ধ নয়।

থেকে https://stackoverflow.com/questions/12210102/does-gcc-4-7-1-support-threads mingw বিল্ড এ http://code.google.com/p/mingw-builds/downloads/list থ্রেড সমর্থন ।

তবে গুরুত্বপূর্ণ বিবেচনাটি লাইসেন্স।

জিপিএল-এর সাথে ফ্রিবিএসডি-র একটি অস্বস্তিকর সম্পর্ক রয়েছে। বিএসডি-লাইসেন্সের অ্যাডভোকেটরা বিশ্বাস করেন যে সত্যিকারের ফ্রি সফটওয়্যারের কোনও ব্যবহারের সীমাবদ্ধতা নেই। জিপিএলের উকিলরা বিশ্বাস করেন যে সফ্টওয়্যার স্বাধীনতা রক্ষার জন্য বিধিনিষেধের প্রয়োজনীয়তা রয়েছে এবং বিশেষত ফ্রি সফটওয়্যার থেকে অ-নিখরচায় সফ্টওয়্যার তৈরির ক্ষমতা স্বাধীনতার চেয়ে ক্ষমতার অন্যায্য রূপ is ফ্রিবিএসডি প্রকল্প, যেখানে সম্ভব, জিপিএল ব্যবহার এড়াতে চেষ্টা করেছে (বিশদ https://unix.stackexchange.com/questions/49906/why-is-freebsd-deprecating-gcc-in-Live-of-clang- llvm )

অন্যান্য গুরুত্বপূর্ণ বিবেচনা

Http://clang.llvm.org/compistance.html#gcc থেকে

  • ক্ল্যাং এএসটি এবং ডিজাইনটি যার সাথে জড়িত ভাষাগুলির সাথে পরিচিত এবং যিনি সংকলক কীভাবে কাজ করেন তার বুনিয়াদি বোধগম্যর দ্বারা সহজেই বোধগম্য হওয়ার উদ্দেশ্যে are জিসিসির একটি খুব পুরানো কোডবেস রয়েছে যা নতুন বিকাশকারীদের কাছে খাড়া শেখার বক্ররেখা উপস্থাপন করে।
  • কলং এর সূচনা থেকেই এপিআই হিসাবে ডিজাইন করা হয়েছে, এটি উত্স বিশ্লেষণ সরঞ্জাম, রিফ্যাক্টরিং, আইডিই (ইত্যাদি) পাশাপাশি কোড উত্পন্ন করার জন্য পুনরায় ব্যবহার করার অনুমতি দেয়। জিসিসি মনোলিথিক স্ট্যাটিক সংকলক হিসাবে নির্মিত, যা এপিআই হিসাবে ব্যবহার করা এবং অন্যান্য সরঞ্জামগুলিতে একীকরণ করা চূড়ান্ত করে তোলে। তদুপরি, এর historicতিহাসিক নকশা এবং বর্তমান নীতিটি বাকী সংকলক থেকে সম্মুখ-প্রান্তটি ডিকুয়াল করা কঠিন করে তোলে।
  • বিভিন্ন জিসিসি ডিজাইনের সিদ্ধান্তগুলি পুনরায় ব্যবহার করা খুব কঠিন করে তোলে: এর বিল্ড সিস্টেমটি সংশোধন করা শক্ত, আপনি একাধিক লক্ষ্যকে একটি বাইনারে লিঙ্ক করতে পারবেন না, আপনি একাধিক ফ্রন্ট-প্রান্তকে একটি বাইনারে লিঙ্ক করতে পারবেন না, এটি একটি কাস্টম আবর্জনা সংগ্রহকারী ব্যবহার করে, গ্লোবাল ভেরিয়েবলগুলি ব্যাপকভাবে ব্যবহার করে, প্রেরণকারী বা মাল্টি-থ্রেডেবল নয় ইত্যাদি ইত্যাদি ঝাঁকুনির মধ্যে এগুলির কোনও সমস্যা নেই।
  • প্রতিটি টোকেনের জন্য, ঝনঝন তথ্য কোথায় লেখা হয়েছিল এবং কোথায় এটি ম্যাক্রোতে জড়িত ছিল তা চূড়ান্তভাবে প্রসারিত হয়েছিল সে সম্পর্কে তথ্য ট্র্যাক করে। উত্স কোডটি বিশ্লেষণ করার সময় জিসিসি ম্যাক্রো ইনস্ট্যান্টেশন সম্পর্কিত তথ্য ট্র্যাক করে না। এটি উত্স পুনর্লিখন সরঞ্জামগুলির জন্য (উদাহরণস্বরূপ রিফ্যাক্টরিংয়ের জন্য) এমনকি (এমনকি সাধারণ) ম্যাক্রোগুলির উপস্থিতিতে কাজ করা খুব কঠিন করে তোলে।
  • জঞ্জাল কোডটি স্পষ্টভাবে সরল করে না কারণ এটি জিসিসির মতো পার্স করে। উত্স বিশ্লেষণ সরঞ্জামগুলির জন্য এটি করার ফলে অনেক সমস্যা দেখা দেয়: একটি সাধারণ উদাহরণ হিসাবে আপনি যদি আপনার উত্স কোডটিতে "xx" লিখেন তবে জিসিসি এএসটিতে "0" থাকবে, যার সাথে 'x' উল্লেখ নেই। এটি একটি রিফ্যাক্টরিং সরঞ্জামের জন্য অত্যন্ত খারাপ যা 'x' এর নাম পরিবর্তন করতে চায়।
  • কলং তার এএসটি আউট করে ডিস্কে বের করে আবার এটিকে আবার কোনও প্রোগ্রামে পড়তে পারে, যা পুরো প্রোগ্রাম বিশ্লেষণের জন্য দরকারী for জিসিসির কাছে এটি নেই। জিসিসির পিসিএইচ মেকানিজম (যা সংকলক মেমরি চিত্রের কেবল একটি ডাম্প) সম্পর্কিত, তবে স্থাপত্যগতভাবে কেবল ডাম্পটি যেটিকে উত্পাদিত হয়েছে তার ঠিক একই এক্সিকিউটেবলের মধ্যে পড়তে সক্ষম (এটি কোনও কাঠামোগত বিন্যাস নয়)।
  • ঝনঝন অনেক দ্রুত এবং জিসিসির তুলনায় অনেক কম মেমরি ব্যবহার করে।
  • কলং এর লক্ষ্য অত্যন্ত স্পষ্ট এবং সংক্ষিপ্ত ডায়াগনস্টিক্স (ত্রুটি এবং সতর্কতা বার্তাগুলি) সরবরাহ করা এবং এতে এক্সপ্রেশনাল ডায়াগনস্টিক্সের জন্য সমর্থন অন্তর্ভুক্ত রয়েছে। জিসিসির সতর্কতাগুলি কখনও কখনও গ্রহণযোগ্য হয় তবে প্রায়শই বিভ্রান্ত হয় এবং এটি এক্সপ্রেশনাল ডায়াগনস্টিকগুলিকে সমর্থন করে না। ক্ল্যাং ডায়াগনস্টিক্সেও নিয়মিতভাবে টাইপডেফগুলি সংরক্ষণ করে, ম্যাক্রো বিস্তৃতি এবং অন্যান্য অনেকগুলি বৈশিষ্ট্য দেখায়।
  • মধ্যবর্তী কোড, প্লাগেবল অপ্টিমাইজার, লিঙ্ক-টাইম অপ্টিমাইজেশন সমর্থন, জাস্ট-ইন-টাইম সংকলন, একাধিক কোড জেনারেটরে লিঙ্ক করার ক্ষমতা ইত্যাদি সহ ব্যান্ডএন্ড হিসাবে এলএলভিএম এর ব্যবহার থেকে বেশ কয়েকটি বৈশিষ্ট্য উত্তরাধিকার সূত্রে প্রাপ্ত Cla ।
  • সি ++ এর জন্য ক্ল্যাংয়ের সমর্থন অনেক দিক থেকে জিসিসির তুলনায় আরও কমপ্লায়েন্ট (উদাহরণস্বরূপ দুটি ধাপের নাম অনুসারে)।

Http://www.linuxquestions.org/questions/slackware-14/gcc-vs-llvm-931034/ থেকে

  • এলএভিএম / ঝনঝনির সুবিধা হ'ল এটির মডুলার ডিজাইন, সুতরাং এটি
    ইন্টারফেস করা যায় এবং উদাহরণস্বরূপ স্থির কোড বিশ্লেষণ সরঞ্জাম তৈরি করতে ব্যবহার করা যেতে পারে , যা আরও বেশি গুরুত্বপূর্ণ হয়ে ওঠে ()

Http://clang.debian.net/ থেকে

  • ঝনঝন এখন উত্পাদনের জন্য সফটওয়্যার তৈরি করতে প্রস্তুত (সি, সি ++ বা উদ্দেশ্য-সি এর জন্য)। এই সংকলকটি জিসিসির মতো একই উত্তরাধিকার বহন না করার সময় গিসি স্যুটের চেয়ে অনেক বেশি সতর্কতা এবং আকর্ষণীয় ত্রুটি সরবরাহ করে।

2
সর্বকালের সেরা উত্তর!
ভোরাক

3
কেবলমাত্র আপ-টু-ডেট হতে হবে: জিসিসি 4.8 সাল থেকে ম্যাক্রোগুলি -ftrack-macro-expansion
বিস্তৃতকরণটিকে

পার্সিংয়ের সময় উত্স ট্রিটিকে সরল করার চেষ্টা করার সাথে আরেকটি সমস্যা হ'ল এমন অনেক পরিস্থিতি রয়েছে যেখানে কিছুটা বাক্য গঠন কোনও কোড উত্পন্ন না করে তবে কী অপ্টিমাইজেশান অনুমোদিত তা প্রভাবিত করে। যদি fooএবং mooবিভিন্ন কাঠামোর ধরণের জন্য পয়েন্টার হয় তবে উভয়ের উভয়ই barতাদের প্রাথমিক ক্রমের অংশ হিসাবে ক্ষেত্র রয়েছে , লেখালেখি *&foo->barএবং পাঠের *&moo->barফলে লেখাটি পড়ার ফলাফল হওয়া উচিত, যেহেতু উভয়ই অ্যাক্সেসে ব্যবহৃত একমাত্র কার্যকর ধরণটি টাইপ bar। জিসিসি তবে ফিল্টার করে ফেলেছে *&এবং এর প্রকারগুলি fooএবং moo...
সুপারক্যাট

... অ্যাড্রেস-অফ অপারেটরের মাধ্যমে, যা আমি স্ট্যান্ডার্ডে খুঁজে পেতে পারি তার দ্বারা ন্যায্য নয়।
সুপারক্যাট

11

এটি অনেক বেশি সময় নেয় তার কারণ হ'ল শীর্ষে শিরোনামগুলি তৈরি করতে শক্ত ভিত্তি পেতে অনেক বেশি কাজ লাগে। মিংডাব্লু-ডাব্লু 64৪ যেভাবে বুয় মনে করছে তা হ'ল উইন্ডোজে একটি শক্ত পাইথ্রেডস লাইব্রেরি তৈরি করা। উইন্ডোজ এপিআই এর নেটিভ থ্রেডিংয়ের উপর নির্ভরতা প্রবর্তনের চেয়ে ওপরে প্রবাহের হতাশা কম less

mingw-w64 প্রয়োগসমূহ <thread>এবং অন্যান্য সি ++ 11 তাদের নিজস্ব winpthreadsলাইব্রেরির শীর্ষে শিরোনাম । এটি মিংডাব্লু-বিল্ডস এবং রুবেভেনভের মিংডাব্লু-ডব্লু 64 সরঞ্জামচইনের বিতরণ উভয় ক্ষেত্রেই পরীক্ষার জন্য উপলব্ধ হওয়া উচিত। দেশীয় উইন্ডোজ জিসিসির বেশিরভাগ কাজ কোথায় হয় তা যদি আপনি ট্র্যাক করতে চান তবে আমি মিংডাব্লু-ডাব্লু 6464 মেলিং তালিকাগুলি অনুসরণ করার পরামর্শ দিচ্ছি।

কিউটি প্রজেক্টের একটি উইকি পৃষ্ঠা রয়েছে যা তাদের বর্তমান প্রস্তাবনা এবং উইন্ডোজে জিসিসি সরঞ্জামচেইনের একটি ওভার ভিউ বিশ্লেষণ করে এই কিউটি প্রকল্পের উইকি পৃষ্ঠাটি দেখুন

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