মাল্টি-থ্রেড জাভাস্ক্রিপ্ট রানটাইম বাস্তবায়ন করার ত্রুটিগুলি কী কী? [বন্ধ]


51

আমি গত এক সপ্তাহ ধরে একাধিক-থ্রেড জাভাস্ক্রিপ্ট রানটাইম বাস্তবায়নে কাজ করছি। আমার কাছে জাভাস্ক্রিপ্টকোর এবং বুস্ট ব্যবহার করে সি ++ তে তৈরি কনসেপ্টের একটি প্রমাণ রয়েছে।

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

মাল্টিথ্রেডেড নোড.জেএস রানটাইম কাজ করছে

সমস্যাটি হ'ল আমি যখন এই নকশাটি কোনও জাভাস্ক্রিপ্ট প্রোগ্রামারকে দেখি তখন আমি চূড়ান্ত নেতিবাচক প্রতিক্রিয়া পাই এবং কেন তা আমার কোনও ধারণা নেই। এমনকি গোপনে, তারা সকলেই বলেছে যে জাভাস্ক্রিপ্ট বলতে বোঝায় একক থ্রেড করা, বিদ্যমান গ্রন্থাগারগুলি নতুন করে লিখতে হবে এবং আমি যদি এই কাজটি চালিয়ে যেতে থাকি তবে গ্রিলিমিনগুলি স্প্যান করে এবং প্রতিটি জীবকে খায়।

আমার কাছে মূলত স্থানীয়ভাবে একটি কর্টিন বাস্তবায়ন ছিল (বুস্ট কনটেক্সট ব্যবহার করে) তবে আমার এটি খনন করতে হয়েছিল (জাভাস্ক্রিপ্টকোর স্ট্যাকটি সম্পর্কে পেডেন্টিক), এবং আমি তাদের ক্রোধ ঝুঁকি নিতে চাইনি তাই আমি এটি উল্লেখ করার বিরুদ্ধে সিদ্ধান্ত নিয়েছিলাম।

আপনি কি মনে করেন? জাভাস্ক্রিপ্টটি কি একক থ্রেডযুক্ত বোঝানো হয়েছে, এবং এটি কি একা রেখে দেওয়া উচিত? সবাই কেন একযোগে জাভাস্ক্রিপ্ট রানটাইম ধারণার বিরুদ্ধে?

সম্পাদনা করুন: প্রকল্পটি এখন গিটহাব-এ রয়েছে , এটি নিজেই পরীক্ষা করুন এবং আপনার মতামত আমাকে জানান।

নীচে কোনও বিতর্ক ছাড়াই সমান্তরালভাবে সমস্ত সিপিইউ কোরগুলিতে চলছে প্রতিশ্রুতির চিত্র:

একযোগে প্রতিশ্রুতি চলছে।


7
এটি একটি অত্যন্ত মতামতযুক্ত প্রশ্নের মতো মনে হচ্ছে। আপনি কি এমন লোকদের জিজ্ঞাসা করেছেন যারা আপত্তিজনকভাবে আপনার ধারণা পছন্দ করেন না কেন তারা ভাবেন যে এটি ঝামেলা হবে?
5gon12eder

26
এমন কিছুতে থ্রেড যুক্ত করা যা মাল্টিথ্রেড হওয়া বোঝায় না এমন একটি চালকের এড সরবরাহ না করেই একটি লেনের রাস্তাটিকে এক্সপ্রেসওয়েতে রূপান্তরিত করার মতো। লোকেরা এলোমেলোভাবে ক্রাশ শুরু না করা পর্যন্ত এটি বেশিরভাগ সময় কাজ করবে। মাল্টিথ্রেডিংয়ের মাধ্যমে আপনি হয় এমন সূক্ষ্ম টাইমিং বাগ পেয়ে যাচ্ছেন যা আপনি বেশিরভাগ সময় পুনরুত্পাদন করতে বা ভুল আচরণ করতে পারবেন না। সেই বিষয়টি মাথায় রেখেই আপনাকে ডিজাইন করতে হবে। আপনার থ্রেড সিঙ্ক্রোনাইজেশন দরকার। কেবল ভেরিয়েবলকে পারমাণবিক তৈরি করা জাতির শর্তগুলি দূর করে না।
mgw854

2
আপনি কীভাবে ভাগ করা স্থিতিতে মাল্টি-থ্রেড অ্যাক্সেস পরিচালনা করার পরিকল্পনা করছেন? "পারমাণবিক হিসাবে চিহ্নিত এবং অ্যাক্সেসের পক্ষে প্রার্থনা করুন" এটি কীভাবে কাজ করবে বলে আপনার মনে হয় তা ব্যাখ্যা করে না। আমি অনুমান করব যে ধারণাটির প্রতি নেতিবাচক মনোভাব হ'ল কারণ আপনি কীভাবে বাস্তবে এই কাজটি করবেন তা মানুষের কোনও ধারণা নেই। অথবা, আপনি যদি জাভা বা সি ++ এর মতো বিকাশকারীকে যথাযথ মিউটেক্স এবং এই জাতীয় ব্যবহার করার জন্য সমস্ত বোঝা চাপিয়ে রাখছেন তবে লোকেরা সম্ভবত ভাবছেন যে তারা কেন এমন জটিলতা এবং প্রোগ্রামিং ঝুঁকি এমন পরিবেশে মুক্ত করতে চান যে এটি এ থেকে মুক্ত।
jਫਰ00

17
থ্রেডগুলির মধ্যে স্বয়ংক্রিয়ভাবে এলোমেলোভাবে স্থিতি স্থাপন করা প্রায় অসম্ভব সমস্যা হিসাবে বিবেচিত হয় সুতরাং আপনার কোনও বিশ্বাসযোগ্যতা নেই যা আপনি এটি স্বয়ংক্রিয়ভাবে করে এমন কোনও কিছু দিতে পারেন। এবং, আপনি যদি কেবল জাভা বা সি ++ এর মতো বিকাশকারীকে বোঝাটি ফিরিয়ে আনতে চলেছেন, তবে বেশিরভাগ নোড.জেএস প্রোগ্রামাররা সে বোঝা চায় না - তারা পছন্দ করে যে নোড.জেএসকে এর সাথে কাজ করতে হবে না like অধিকাংশ অংশ. আপনি যদি আরও সহানুভূতিশীল কান পেতে চান তবে আপনাকে কীভাবে এবং এই বিষয়ে কী অফার করবে এবং কেন এটি ভাল এবং কার্যকর হবে তা আপনাকে ব্যাখ্যা / দেখিয়ে দিতে হবে।
jender00

3
আপনার কাজ চালিয়ে যান দয়া করে। আমি মাল্টি-থ্রেডিং ছাড়া ভাষা খেলনা ভাষা হিসাবে বিবেচনা করি। আমি মনে করি বেশিরভাগ জাভাস্ক্রিপ্ট বিকাশকারী ব্রাউজারের সাথে কাজ করে, যার একক থ্রেড মডেল রয়েছে।
ক্লো

উত্তর:


70

1) মাল্টিথ্রেডিং অত্যন্ত কঠিন, এবং দুর্ভাগ্যক্রমে আপনি এখন পর্যন্ত এই ধারণাটি যেভাবে উপস্থাপন করেছেন তা বোঝায় যে আপনি এটি কতটা কঠোর তা কঠোরভাবে অবমূল্যায়ন করছেন।

এই মুহুর্তে, মনে হচ্ছে আপনি কেবল ভাষায় "থ্রেড যুক্ত করছেন" এবং কীভাবে এটি সঠিক এবং পারফরম্যান্ট করতে হবে তা নিয়ে উদ্বিগ্ন। নির্দিষ্টভাবে:

যদি দুটি কাজ একই সাথে একটি পরিবর্তনশীল অ্যাক্সেস করার চেষ্টা করে তবে এটি পারমাণবিক হিসাবে চিহ্নিত হয় এবং তারা অ্যাক্সেসের পক্ষে দাবি করে।
...
আমি সম্মত হই যে পারমাণবিক ভেরিয়েবলগুলি সমস্ত কিছু সমাধান করবে না, তবে সিঙ্ক্রোনাইজেশন সমস্যার সমাধানের জন্য কাজ করা আমার পরবর্তী লক্ষ্য।

"সিঙ্ক্রোনাইজেশন সমস্যার সমাধান না করে" জাভাস্ক্রিপ্টে থ্রেড যুক্ত করা জাভাস্ক্রিপ্টে "সংযোজন সমস্যার সমাধান না করে" ইন্টিজার যুক্ত করার মতো। এটি সমস্যার প্রকৃতির পক্ষে এতটাই মৌলিক যে মূলত কোনও নির্দিষ্ট সমাধান না রেখে আমরা মাল্টিথ্রেডিং যুক্ত হওয়া উচিত কিনা তা নিয়ে মূলত আলোচনা করার কোনও অর্থ নেই, তা আমরা যতই খারাপভাবে চাই না কেন তা বিবেচনা করুন।

এছাড়াও, সমস্ত ভেরিয়েবলকে পারমাণবিক করে তোলা এমন এক ধরণের জিনিস যা সম্ভবত একটি বহুবিবাহিত প্রোগ্রামকে তার এককলাংশিত অংশের তুলনায় আরও খারাপ সঞ্চালন করে তোলে, এটি আরও বাস্তবসম্মত প্রোগ্রামগুলিতে প্রকৃতপক্ষে পারফরম্যান্স পরীক্ষা করে দেখা এবং আপনি কিছু অর্জন করছেন কিনা তা আরও গুরুত্বপূর্ণ করে তোলে।

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

সুতরাং এই মুহুর্তে, আপনি প্রোগ্রামারদেরকে এককলাঠিত পরিবেশ থেকে একেবারে নতুন বহুবিবাহিত পরিবেশে স্যুইচিংয়ের সমস্যার সমাধান করার কোনও সমাধান নেই এবং এটি বাস্তব-বিশ্বের পারফরম্যান্সের উন্নতি করার কোনও প্রমাণ নেই এবং এই সমস্যাগুলি সমাধান করার জন্য আপাতদৃষ্টিতে কোনও পরিকল্পনা নেই বলে বিবেচনা করতে বলছেন।

এ কারণেই সম্ভবত লোকেরা আপনাকে গুরুত্ব সহকারে নেয় না।

2) একক ইভেন্ট লুপের সরলতা এবং দৃust়তা একটি বিশাল সুবিধা।

জাভাস্ক্রিপ্ট প্রোগ্রামাররা জানেন যে জাভাস্ক্রিপ্ট ভাষা জাতিগত পরিস্থিতি এবং অন্যান্য অত্যন্ত জালিয়াতি বাগগুলি থেকে সমস্ত নিরাপদে বহুবিশ্লেষিত প্রোগ্রামিং থেকে দূরে থাকা "নিরাপদ"। তাদের এই নিরাপত্তা ত্যাগ করার জন্য তাদের দৃ convince় বিশ্বাসের জন্য দৃ strong় যুক্তিগুলির প্রয়োজন যে এগুলি তাদের বন্ধচিন্তিত করে না, এটি তাদেরকে দায়বদ্ধ করে তোলে।

যদি আপনি কোনওভাবে এই সুরক্ষা ধরে না রাখতে পারেন তবে যে কেউ মাল্টিথ্রেডেড নোড.জেজে স্যুইচ করতে চান তারা সম্ভবত গোয়ের মতো কোনও ভাষাতে স্যুইচিংয়ের চেয়ে ভাল হতে পারেন যেটি মাল্টিথ্রেডেড অ্যাপ্লিকেশনগুলির জন্য গ্রাউন্ড আপ থেকে তৈরি করা হয়েছে।

3) জাভাস্ক্রিপ্ট ইতিমধ্যে প্রোগ্রামারটিতে থ্রেড ম্যানেজমেন্ট সরাসরি প্রকাশ না করেই "ব্যাকগ্রাউন্ড থ্রেড" (ওয়েব ওয়ার্কার্স) এবং অ্যাসিনক্রোনাস প্রোগ্রামিং সমর্থন করে।

এই বৈশিষ্ট্যগুলি ইতিমধ্যে প্রচলিত সাধারণ ব্যবহারের কেসগুলি সমাধান করে যা বাস্তব বিশ্বের জাভাস্ক্রিপ্ট প্রোগ্রামারগুলিকে প্রভাবিত করে, একক ইভেন্ট লুপটির সুরক্ষা না দিয়ে।

এই বৈশিষ্ট্যগুলি সমাধান না করে এবং জাভাস্ক্রিপ্ট প্রোগ্রামাররা এর সমাধান চান তা মনে করে আপনার কোনও নির্দিষ্ট ব্যবহারের মামলা রয়েছে? যদি তা হয় তবে আপনার মাল্টিথ্রেডেড নোড.জেগুলি সেই নির্দিষ্ট ব্যবহারের ক্ষেত্রে প্রসঙ্গে উপস্থাপন করা ভাল ধারণা হবে।


পিএস আমাকে মাল্টিথ্রেডেড নোড.জেএস বাস্তবায়নে স্যুইচ করার চেষ্টা করতে কী বোঝাবে?

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

এটি করা হয়ে গেলে, আমি মনে করি আপনি এই ধারণার প্রতি লোকদের আরও বেশি আগ্রহী দেখবেন।


1
1) ঠিক আছে, আমি স্বীকার করব যে আমি কিছুক্ষণের জন্য সিঙ্ক্রোনাইজেশনের বিষয়টি বন্ধ করে দিচ্ছি। যখন আমি বলি যে 'দুটি কাজ বিবাদ করবে', এটি আমার নকশা নয়, এটি মূলত একটি পর্যবেক্ষণ: dl.roidboxusercontent.com/u/27714141/… - আমি নিশ্চিত নই যে জাভাস্ক্রিপ্ট কোর কোন ধরণের জাদুবিদ্যা এখানে সম্পাদন করছে, তবে তা করা উচিত নয় ' t যদি এই স্ট্রিংটি দুর্নীতিগ্রস্থ না হয় যদি তা অন্তর্নিহিত পারমাণবিক না হত? 2) আমি দৃ strongly়ভাবে একমত না। এই কারণেই জেএসকে খেলনা ভাষা হিসাবে দেখা হয়। 3) ES6 প্রতিশ্রুতি থ্রেড পুল শিডিয়ুলার ব্যবহার করে প্রয়োগ করা হলে আরও বেশি পারফরম্যান্স হবে।
ভুডোটাটাক

13
@ ভুডোঅ্যাটাক "এই কারণেই জেএসকে খেলনার ভাষা হিসাবে দেখা হয়।" না, এই কারণেই আপনি এটিকে খেলনার ভাষা মনে করেন। কয়েক মিলিয়ন মানুষ প্রতিদিন জেএস ব্যবহার করে এবং এর সাথে ত্রুটিগুলি এবং সমস্ত কিছুতে পুরোপুরি খুশি। নিশ্চিত হয়ে নিন যে আপনি আসলেই এমন কোনও সমস্যা সমাধান করছেন যা যথেষ্ট পরিমাণে অন্যান্য লোকেরা পেয়ে থাকেন, এটি কেবলমাত্র ভাষা পরিবর্তন করে আরও ভাল সমাধান করা যায় না।
ক্রিস হেইস

@ ক্রিসহেইস প্রশ্নটি হল, আমি যখন তাদের সংশোধন করতে পারি তখন তার ত্রুটিগুলি কেন রাখি? কোনও বৈশিষ্ট্য হিসাবে জাভাস্ক্রিপ্ট উন্নত হবে?
ভুডুটাট্যাক

1
@ ভুডুয়াট্যাক এটাই প্রশ্ন। কোনও বৈশিষ্ট্য হিসাবে জাভাস্ক্রিপ্ট উন্নতি করবে? যদি আপনি কোনও সম্প্রদায়ের উত্তরটি পেতে পারেন যা এটি "না" নয়, তবে সম্ভবত আপনি কিছু করছেন। যাইহোক, দেখে মনে হচ্ছে ইভেন্টটি লুপ এবং নোডের কর্মীদের থ্রেডগুলিতে কর্মীদের থ্রেডগুলিতে নেটিভ প্রতিনিধিদের বেশিরভাগ লোকেরা যা করতে হবে তা যথেষ্ট। আমি মনে করি লোকেরা যদি সত্যিই থ্রেডেড জাভাস্ক্রিপ্টের প্রয়োজন হয় তবে তারা জাভাস্ক্রিপ্ট কর্মীদের ব্যবহার করবে। আপনি শ্রমিকরা পরিবর্তে জাতীয় ফাইলের প্রথম শ্রেণীর ফাংশন সঙ্গে কাজ করতে একটি উপায় খুঁজে বের করতে পারেন তবে .... তারপর আপনি পারে সত্যিই কিছু সম্মুখের দিকে দেখুন।
লাঞ্চমিট317

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

16

আপনার পদ্ধতির কোনও সমস্যা দেখানোর জন্য এখানে কেবল অনুমান করা। আমি বাস্তব বাস্তবায়নের বিরুদ্ধে এটি পরীক্ষা করতে পারছি না কারণ কোথাও কোনও লিঙ্ক নেই ...

আমি এটি বলব কারণ আক্রমণকারীরা সর্বদা একটি ভেরিয়েবলের মান দ্বারা প্রকাশিত হয় না এবং সাধারণ ক্ষেত্রে লক হওয়ার সুযোগ হিসাবে 'একটি ভেরিয়েবল' যথেষ্ট নয় sufficient উদাহরণস্বরূপ, কল্পনা করুন যে আমাদের একটি আক্রমণকারী রয়েছে a+b = 0(দুটি অ্যাকাউন্টের সাথে একটি ব্যাংকের ভারসাম্য)। নীচের দুটি ফাংশন নিশ্চিত করে যে প্রতিটি ফাংশনের শেষে (একক থ্রেডেড জেএসে কার্যকরকরণের একক) আক্রমণকারীটি সর্বদা অনুষ্ঠিত হয়

function withdraw(v) {
  a -= v;
  b += v;
}
function deposit(v) {
  b -= v;
  a += v;
}

এখন, আপনার বহুবিবাহিত বিশ্বে, যখন দুটি থ্রেড কার্যকর হবে withdrawএবং depositএকই সাথে কী হবে? ধন্যবাদ, মারফি ...

(আপনার কাছে এমন কোড থাকতে পারে যা + = এবং - = বিশেষভাবে আচরণ করে তবে এটি কোনও সহায়তা নয় some কোনও সময়ে আপনার কোনও স্থানীয় অবস্থাতে স্থানীয় অবস্থা থাকবে এবং একই সাথে আপনার আক্রমণকারীকে একই সাথে দুটি পরিবর্তনশীল 'লক' করার উপায় থাকবে না) লঙ্ঘন করা হবে।)


সম্পাদনা: আপনার কোডটি যদি https://gist.github.com/thriqon/f94c10a45b7e0bf656781b0f4a07292a তে গো কোডের সমার্থক হয় তবে আমার মন্তব্যটি নির্ভুল ;-)


এই মন্তব্যটি অপ্রাসঙ্গিক, তবে দার্শনিকরা একাধিক বস্তু লক করতে সক্ষম, তবে তারা অনাহারে মারা গেছে কারণ তারা এগুলি একটি বেমানান ক্রমে লক করেছেন।
ডায়েটারিচ এপ্পি

3
@ ভুডোঅ্যাটাক "আমি কেবল পরীক্ষা করেছি ..." থ্রেড শিডিংয়ের সাথে আপনি কি কখনও বেমানান কার্যকর আদেশের মুখোমুখি হননি? এটি রান থেকে রান, মেশিন থেকে মেশিনে পরিবর্তিত হয়। কীভাবে অপারেশন নির্ধারিত হবে তার প্রক্রিয়াটি সনাক্ত না করে বসে বসে একটি একক পরীক্ষা (বা একশত টেস্ট!) চালানো নিষ্ক্রিয়।
jpmc26

4
@ ভুডোঅ্যাটাক সমস্যাটি হ'ল সহজভাবে পরীক্ষা করা কার্যকর নয়। আপনাকে প্রমাণ করতে সক্ষম হতে হবে যে আক্রমণকারীটি ধরে রাখবে, বা উত্পাদন প্রক্রিয়াটিতে কখনই বিশ্বাস করা যায় না।
সাপি

1
তবে আপনি "সিস্টেমটিকে দায়িত্বের সাথে ব্যবহার করতে" কোনও সরঞ্জামই দেননি কারণ একেবারে লক করার কোনও ব্যবস্থা নেই। প্রতিটি কিছুকে পারমাণবিক তৈরি করা থ্রেড-সুরক্ষার একটি ধারণা দেয় (এবং আপনি যদি পারমাণবিক অ্যাক্সেসের প্রয়োজন না হয় এমন কিছুর পরেও আপনি প্রতিটি কিছুর পারফরম্যান্স হিট করেন), তবে এটি আসলে এক থ্রাইকোন যেমন সর্বাধিক সাময়িক সমস্যার সমাধান করে না। অন্য উদাহরণের জন্য, অন্য থ্রেডটি অ্যারে থেকে উপাদানগুলিকে যুক্ত বা সরিয়ে রাখার সময় একটি থ্রেডে অ্যারের উপরে পুনরাবৃত্তি করার চেষ্টা করুন। এই বিষয়টির জন্য, আপনার কী মনে হয় ইঞ্জিনটির অ্যারে প্রয়োগ করা এমনকি থ্রেডও নিরাপদ?
জ্যাচ লিপটন

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

15

এক দশক বা তারও অনেক আগে ব্রেন্ডন আইচ (জাভাস্ক্রিপ্টের উদ্ভাবক) থ্রেডস সাক নামে একটি প্রবন্ধ লিখেছিলেন , যা সম্ভবত জাভাস্ক্রিপ্টের নকশা পুরাণের কয়েকটি কমনীয় নথির মধ্যে একটি of

এটি সঠিক কিনা তা অন্য একটি প্রশ্ন, তবে আমি মনে করি জাভা স্ক্রিপ্ট সম্প্রদায় সম্মতি সম্পর্কে কীভাবে চিন্তা করে তার উপর এটির একটি বড় প্রভাব ছিল।


31
আমি সর্বশেষ ব্যক্তির কাছ থেকে পরামর্শ নেব তিনি হলেন ব্রেন্ডন আইচ। তাঁর পুরো কেরিয়ারটি জাভাস্ক্রিপ্ট তৈরির উপর ভিত্তি করে তৈরি করা হয়েছে, যা এত খারাপ যে আমাদের চেষ্টা করার জন্য এবং তার জন্মগত কৃপণতার আশেপাশের জন্য তৈরি করার জন্য প্রচুর সরঞ্জাম তৈরি করা হয়েছে। তাঁর কারণে বিশ্বে কত বিকাশকারী ঘন্টা নষ্ট হয়েছে তা ভেবে দেখুন।
ফিল রাইট

12
আপনি কেন সাধারণভাবে তাঁর মতামত এবং জাভাস্ক্রিপ্টের প্রতি আপনার ঘৃণা করবেন তা আমি বুঝতে পেরেছি, আপনার দৃষ্টিভঙ্গি কীভাবে ডোমেনে তাঁর দক্ষতা উপেক্ষা করার অনুমতি দেবে তা আমি বুঝতে পারি না।
বিলি ক্রাভেন্সস

4
@ বিলিক্রাভেনস হাহা, এমনকি জাভাস্ক্রিপ্টের প্রামাণ্য বইটি: ক্রোকফোর্ডের "জাভাস্ক্রিপ্টের ভাল অংশগুলি " শিরোনামের বাইরে রেখে দিয়েছে।
আইচের

13
@ ফিলাইরাইট: জাভাস্ক্রিপ্টের তাঁর প্রথম প্রয়োগটি ছিল লিস্পের রূপ। আমার কাছে যা তাকে প্রচুর শ্রদ্ধা করে। তাঁর বসের সিদ্ধান্ত তাকে সি-জাতীয় সিনট্যাক্সের সাথে লিস্প সিনট্যাক্স প্রতিস্থাপন করতে বাধ্য করা তার দোষ নয়। এর মূল অংশে জাভাস্ক্রিপ্ট এখনও একটি লিস্প রানটাইম।
slebetman

7
@ ফিলাইরাইট: ভাষার কৃপণতার জন্য আপনার আইচকে দোষ দেওয়া উচিত নয়। এটি প্রারম্ভিক বাস্তবায়নের ক্ষেত্রে বাগ এবং জেএসকে পরিপক্ক হতে বাধা দেয় এমন কোনও ওয়েব ভাষার জন্য পিছনে-সামঞ্জস্যের প্রয়োজনীয়তা। মূল ধারণাগুলি এখনও একটি দুর্দান্ত ভাষা গঠন করে।
বার্গি

8

পারমাণবিক অ্যাক্সেস থ্রেড-নিরাপদ আচরণে অনুবাদ করে না।

একটি উদাহরণ হ'ল যখন কোনও গ্লোবাল ডেটা স্ট্রাকচারটি কোনও আপডেটের সময় হ্যাশম্যাপ পুনঃস্থাপনের (যেমন কোনও বস্তুর সাথে কোনও সম্পত্তি যুক্ত করার সময়) বা বিশ্বব্যাপী অ্যারে বাছাই করার মতো অবৈধ হওয়া দরকার। সেই সময়ের মধ্যে আপনি ভেরিয়েবল অ্যাক্সেস করার জন্য অন্য কোনও থ্রেডকে অনুমতি দিতে পারবেন না। এটির মূলত এর অর্থ হ'ল আপনাকে সম্পূর্ণ পঠন-আপডেট-লেখার চক্রটি সনাক্ত করতে হবে এবং এটিকে লক করতে হবে। আপডেটটি যদি তুচ্ছ না হয় তবে সমস্যাটি থামিয়ে দেওয়া হবে into

জাভাস্ক্রিপ্ট প্রথম থেকেই একক থ্রেডেড এবং স্যান্ডবক্সযুক্ত হয়েছে এবং সমস্ত কোডগুলি এই অনুমানগুলি মাথায় রেখে লেখা হয়েছে।

বিচ্ছিন্ন প্রসঙ্গে এবং 2 টি পৃথক প্রসঙ্গকে বিভিন্ন থ্রেডে চালিত হতে দেওয়া সহ এটির একটি দুর্দান্ত সুবিধা রয়েছে। আমার আরও অর্থ জাভাস্ক্রিপ্ট লেখার লোকদের কীভাবে জাতিদের পরিস্থিতি এবং অন্যান্য বহু মাল্টি-থ্রেড পিটফালগুলি মোকাবেলা করতে হবে তা জানতে হবে না।


এ কারণেই আমি মনে করি শিডিয়ুলার এপিআই আরও উন্নত পক্ষের হওয়া উচিত, এবং অভ্যন্তরীণভাবে প্রতিশ্রুতি এবং ফাংশনগুলির জন্য ব্যবহৃত হয় যার কোনও পার্শ্ব প্রতিক্রিয়া নেই।
ভুডুটাট্যাক

6

আপনার পদ্ধতির কর্মক্ষমতা উল্লেখযোগ্যভাবে উন্নতি করতে চলেছে?

সন্দিহান। আপনার সত্যই এটি প্রমাণ করা দরকার।

আপনার পদ্ধতির কোড লিখতে সহজ / দ্রুত করতে চলেছে?

অবশ্যই না, একাধিক থ্রেডযুক্ত কোডের চেয়ে ডান পেতে বহুগুণযুক্ত কোড অনেক বার শক্ত।

আপনার পদ্ধতির আরও শক্তিশালী হতে চলেছে?

ডেডলকস, রেসের শর্তাদি ইত্যাদি ঠিক করা দুঃস্বপ্ন।


2
নোড.জেএস ব্যবহার করে একটি রেট্রেসার তৈরির চেষ্টা করুন, এখন থ্রেড দিয়ে আবার চেষ্টা করুন। মাল্টি-প্রসেস সব কিছু নয়।
ভুডুটাটাক

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

@ জানহুদেক: হি, জেএস সিমড সমর্থনও পেতে চলেছে :-) হ্যাকস.মোজিলা.আর.জি.২০১৪
বার্গি

2
@ ভুডোঅ্যাটাক আপনি যদি তাদের সম্পর্কে অবগত না হন তবে SharedArrayBuffers দেখুন । জাভাস্ক্রিপ্ট আরও একযোগে তৈরি হচ্ছে, তবে সেগুলি অত্যন্ত সতর্কতার সাথে যুক্ত করা হচ্ছে, নির্দিষ্ট ব্যথার পয়েন্টগুলিকে সম্বোধন করে, আমাদের জন্য বছরের পর বছর ধরে বাঁচতে হবে এমন খারাপ ডিজাইনের সিদ্ধান্ত নেওয়ার চেষ্টা করতে হবে।
মনিকা-জেরেমি ব্যাংকগুলিকে পুনরায় ইনস্টল করুন

2

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

এই মডেলগুলি কী ধরণের সুবিধা দেয় তা নির্ধারণে আপনাকে সহায়তা করতে আপনি সমঝোতার অন্যান্য মডেলগুলির (উদাহরণ: বার্তা পাঠানো) দেখতে পারেন।


1
আমি মনে করি ES6 প্রতিশ্রুতিগুলি আমার প্রয়োগের মডেলটি থেকে উপকৃত হবে, যেহেতু তারা অ্যাক্সেসের পক্ষে লড়াই করে না।
ভুডুটাট্যাক

ওয়েব ওয়ার্কার্সের স্পেসিফিকেশনটি দেখুন। এনটিএম প্যাকেজগুলি রয়েছে যা তাদের বাস্তবায়ন সরবরাহ করে তবে আপনি এগুলিকে আপনার ইঞ্জিনের মূল হিসাবে প্যাকেজ হিসাবে প্রয়োগ করতে পারেন
অঙ্কুর

জাভাস্ক্রিপ্টকোর (আমি ব্যবহার করছি জেএসের ওয়েবকিট বাস্তবায়ন) ইতিমধ্যে তাদের প্রয়োগ করে, এটি কেবল একটি সংকলন পতাকা।
ভুডুটাট্যাক

ঠিক আছে. ওয়েব ওয়ার্কার্স বার্তা পাসের সাথে একমত হয়। আপনি তাদের সাথে আপনার রেটারার উদাহরণ চেষ্টা করতে পারেন এবং এটিকে রূপান্তরকারী রাষ্ট্র পদ্ধতির সাথে তুলনা করতে পারেন।
অঙ্কুর

4
বার্তা উত্তরণ সর্বদা পরিবর্তনীয় স্থানে শীর্ষে প্রয়োগ করা হয় যার অর্থ এটি ধীর হবে। আমি এখানে আপনার পয়েন্ট দেখতে ব্যর্থ। : - /
ভুডুটাট্যাক

1

এটি প্রয়োজন। নোড জেএসে নিম্ন স্তরের একযোগী ব্যবস্থার অভাব এটি গণিত এবং বায়োইনফরম্যাটিকস ইত্যাদির ক্ষেত্রে এর প্রয়োগগুলিকে সীমাবদ্ধ করে তোলে ... তদতিরিক্ত, থ্রেড সহ সম্মতিটি নোডে ব্যবহৃত ডিফল্ট কনক্যুরেন্সির মডেলের সাথে অগত্যা বিরোধ নয়। মূল ইভেন্ট লুপের মতো পরিবেশে থ্রেডিংয়ের জন্য সুপরিচিত শব্দার্থবিজ্ঞান রয়েছে যেমন ইউআই ফ্রেমওয়ার্ক (এবং নোডেজ), এবং বেশিরভাগ পরিস্থিতিতে তাদের এখনও বৈধ ব্যবহার রয়েছে বলে তারা অবশ্যই অত্যধিক জটিল।

অবশ্যই, আপনার গড় ওয়েব অ্যাপ্লিকেশনটির জন্য থ্রেডের প্রয়োজন হবে না, তবে কিছুটা কম প্রচলিত কিছু করার চেষ্টা করুন, এবং নিম্ন স্তরের সমঝোতার আদিমতার অভাব আপনাকে তাড়িত করে অন্য যে কোনও কিছুতে তাড়িত করবে।


4
তবে "ম্যাথ এবং বায়োইনফরম্যাটিকস" সি #, জাভা, বা সি ++ এ আরও ভাল লেখা হবে
ইয়ান

প্রকৃতপক্ষে পাইথন এবং পার্ল সেসব অঞ্চলে প্রভাবশালী ভাষা।
শুকাজভ

1
আসলে, আমি এটি প্রয়োগ করার মূল কারণটি হ'ল মেশিন লার্নিং অ্যাপ্লিকেশনগুলি। সুতরাং আপনি একটি পয়েন্ট আছে।
ভুডুটাট্যাক

@ ড্রায়াজভ খুশি হোন যে আপনি কিছু জেনে নেই যে কম্পিউটারের কিছু বিজ্ঞান বিভাগে
ফরটারান

@ ড্রায়াজভ যেহেতু তারা পুরো সময়ের জন্য প্রোগ্রামার নন এমন মানুষের কাছে আরও অ্যাক্সেসযোগ্য, কারণ তারা জিনোম সিকোয়েন্সিংয়ে স্বভাবগতভাবে আরও ভাল নয় - আমাদের কাছে আর-এর মতো উদ্দেশ্য-নির্মিত ভাষা রয়েছে এবং এর জন্য ফোর্টরানের মতো বৈজ্ঞানিক ল্যাঙ্গগুলি সংকলন করা হয়েছে।
বিড়াল

0

আমি সত্যিই বিশ্বাস করি কারণ এটি একটি ভিন্ন এবং শক্তিশালী ধারণা। আপনি বিশ্বাস সিস্টেমের বিরুদ্ধে যাচ্ছেন। নেটওয়ার্কের মাধ্যমে স্টাফ গ্রহণযোগ্য বা জনপ্রিয় হয়ে ওঠে যোগ্যতার ভিত্তিতে নয় affects এছাড়াও কেউ নতুন স্ট্যাকের সাথে মানিয়ে নিতে চায় না। লোকেরা খুব আলাদা যে জিনিসগুলি স্বয়ংক্রিয়ভাবে প্রত্যাখ্যান করে।

যদি আপনি এটিকে কোনও নিয়মিত এনএমপি মডিউল হিসাবে তৈরি করার উপায় নিয়ে আসতে পারেন যা অসম্ভব মনে হয়, তবে আপনি এটি ব্যবহার করতে কিছু লোক পেতে পারেন।


আপনি কী বোঝাতে চেয়েছিলেন যে জেএস প্রোগ্রামাররা এনপিএম-এ বিক্রেতাকে লক করেছেন?
ভুডুটাট্যাক

3
প্রশ্নটি একটি নতুন রানটাইম সিস্টেম সম্পর্কে এবং কোনও এনপিএম মডিউল নয় এবং পরিবর্তনীয় ভাগ করে নেওয়া রাষ্ট্রের সম্মতিটি সত্যই একটি পুরানো ধারণা।
অঙ্কুর

1
@ ভুডোটাটাক মানে আমি ইতিমধ্যে জনপ্রিয় যে পদ্ধতির প্রতি তারা মস্তিষ্কযুক্ত এবং এটি স্থিতি পক্ষপাত কাটিয়ে উঠতে অসম্ভবের পাশে চলেছে।
জেসন লাইভসে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.