مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

salman_b

عضویت از 1396/02/18

مشکل گره خوردن Thread ها به هم

  • شنبه 22 اردیبهشت 1397
  • 11:09
تشکر میکنم

با سلام

چرا زمانی که چندین Thread یک منبع رو درخواست میکنن در صورت delay در اون منبع همه ی thread ها به هم گره میخورن ؟!

            ParallelLoopResult resultLoop = Parallel.ForEach(requestList, item =>
            {
                DateTime sendRequset = DateTime.Now;
                var value = Process();
                    //Thread.Sleep(100); //Manual Delay
                    //for (int i = 0; i < 10000000; i++) ; //Manual Delay
                    DateTime getResponse = DateTime.Now;

                Result result = new Result()
                {
                    ThreadId = Thread.CurrentThread.ManagedThreadId.ToString(),
                    SendRequestAt = sendRequset.ToString("hh:mm:ss.fff"),
                    GetResponseAt = getResponse.ToString("hh:mm:ss.fff"),
                    Duration = (getResponse - sendRequset).ToString(),
                    Value = value
                };

                lock (resultList)
                {
                    resultList.Add(result);
                }
            });

یکی از دو خطی که کامنت کردم رو اگه اجرا کنم تا delay ایجاد شه همه Thread ها به هم گره میخورن!

حتی اگه این تاخیر رو در تابع process ایجاد کنم و داخل parallel foreach نباشه بازم همه به هم گره می خورن!

یعنی تا اولی پاسخ داده نشه بقیه اجرا نمیشن

دلیلش چیه ؟!

چیکار باید بکنم که گره نخورن به هم

با Thread هم تست گردم نتیجه اش همین بود و فرقی ندارن با هم

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

behroz.faraji@hotmail.com

عضویت از 1394/12/02

  • یکشنبه 30 اردیبهشت 1397
  • 11:58

وقتی از parallel استفاده می کنید خودش همروندی براساس تعداد پردازنده های منطقی کامپیوتر مدیریت می کند و تا پایان اجرای تمامی متدها نخ فراخواندهنده بلاک می شود.

برای اطلاعات بیشتر در مورد کار با نخ ها کتاب برنامه نویسی وظیفه ای فصل 26 27 مهندس منصور عمرانی از انتشارات پندار پارس رو مطالعه کنید.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)