আমার কোডটি এখানে রয়েছে তবে আমি কী করছি তা বুঝতে পারছি SemaphoreSlim
না।
async Task WorkerMainAsync()
{
SemaphoreSlim ss = new SemaphoreSlim(10);
List<Task> trackedTasks = new List<Task>();
while (DoMore())
{
await ss.WaitAsync();
trackedTasks.Add(Task.Run(() =>
{
DoPollingThenWorkAsync();
ss.Release();
}));
}
await Task.WhenAll(trackedTasks);
}
void DoPollingThenWorkAsync()
{
var msg = Poll();
if (msg != null)
{
Thread.Sleep(2000); // process the long running CPU-bound job
}
}
কি অপেক্ষা ss.WaitAsync();
এবং ss.Release();
কি করে?
আমি অনুমান করি যে আমি যদি একবারে 50 টি থ্রেড চালাই তবে কোডটি লিখুন SemaphoreSlim ss = new SemaphoreSlim(10);
তবে এটি সময়ে 10 টি সক্রিয় থ্রেড চালাতে বাধ্য হবে।
10 টির মধ্যে একটি যখন সম্পূর্ণ হবে তখন অন্য থ্রেড শুরু হবে। আমি যদি ঠিক না থেকে থাকে তবে আমাকে নমুনা পরিস্থিতি বুঝতে সাহায্য করুন।
await
পাশাপাশি কেন প্রয়োজন হয় ss.WaitAsync();
? কি করে ss.WaitAsync();
?