मैं वर्तमान में आरएक्स .NET के साथ समवर्तीता के आसपास अपने सिर को लपेटने और कुछ से भ्रमित होने की कोशिश कर रहा हूं। मैं समानांतर में चार अपेक्षाकृत धीमे कार्यों को चलाने के लिए चाहता हूं, इसलिए मुझे लगता है कि NewThreadScheduler.Default
जाने का तरीका होगा, क्योंकि यह "एक ऑब्जेक्ट का प्रतिनिधित्व करता है जो एक अलग थ्रेड पर काम की प्रत्येक इकाई को शेड्यूल करता है।"।NewThreadScheduler.Default शेड्यूल सभी थ्रेड पर काम करता है
यहाँ मेरी सेटअप कोड है:
Starting. Thread 1
Last line. Thread 1
1 Thread 3
2 Thread 3
3 Thread 3
4 Thread 3
Done. Thread 3
सभी काम है:
static void Test()
{
Console.WriteLine("Starting. Thread {0}", Thread.CurrentThread.ManagedThreadId);
var query = Enumerable.Range(1, 4);
var obsQuery = query.ToObservable(NewThreadScheduler.Default);
obsQuery.Subscribe(DoWork, Done);
Console.WriteLine("Last line. Thread {0}", Thread.CurrentThread.ManagedThreadId);
}
static void DoWork(int i)
{
Thread.Sleep(500);
Console.WriteLine("{0} Thread {1}", i, Thread.CurrentThread.ManagedThreadId);
}
static void Done()
{
Console.WriteLine("Done. Thread {0}", Thread.CurrentThread.ManagedThreadId);
}
मैं "एक्स थ्रेड Y" ग्रहण उत्पादन एक अलग धागा आईडी हर बार, फिर भी वास्तविक उत्पादन है होगा अनुक्रमिक क्रम में एक ही नए धागे पर एक होने के नाते, जो मैं उम्मीद नहीं कर रहा था।
मुझे लगता है कि मुझे कुछ याद आ रहा है, लेकिन मैं यह नहीं समझ सकता कि क्या।
इसके लिए धन्यवाद। न केवल आप यह बता रहे हैं कि मैं क्या गलत कर रहा हूं, लेकिन मुझे लगता है कि आरएक्स के इरादे के बारे में आप जो कहते हैं, वह बहुत समझ में आता है। –
उपर्युक्त उत्तर पुराना प्रतीत होता है, क्या विधि अब उपलब्ध नहीं है। – VivekDev
काम करने के लिए विधि विधि के लिए, आपको System.Interactive nuget पैकेज स्थापित करने की आवश्यकता है – VivekDev