نمایش نتایج 1 تا 37 از 37

نام تاپیک: سوال درباره ی اجرای چند نخی و استفاده از چند هسته بصورت همزمان

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

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

    سلام
    وقتی از thread و نخ ها استفاده میکنیم ، مگه واقعا از چند هسته بصورت همزمان استفاده میشه؟
    یعنی مثلا وقتی دو نخ (مثلا یه نخ اصلی به همراه یه نخ دیگه که کلا بشه 2 تا) را اجرا میکنیم ، در این حالت ، واقعا از 2 هسته (ی منطقی) استفاده میشه؟
    اگه نه ، پس چرا در کد زیر ، واقعا از 2 هسته برام استفاده میکنه؟ :


    private void TransparentControl4_Click(object sender, EventArgs e)
    {
    Thread thread = new Thread(new ThreadStart(this.NewThreadMethod));
    thread.Start();


    for (long i = 0; i < 10000000000; i++)
    {
    }


    MessageBox.Show("main thread loop finished");
    }


    private void NewThreadMethod()
    {
    for (long counter = 0; counter < 10000000000; counter++)
    {
    }


    MessageBox.Show("new thread loop finished");
    }


    پردازنده ی من i5 4460 هه (4 هسته ی فیزیکی با 4 هسته ی منطقی) و وقتی کد بالا را توش اجرا میکنم ، از 50 درصد توان پردازنده یعنی از 2 هسته اش (یعنی بصورت موازی) استفاده میکنه . زمان اجراش هم تقریبا 25 ثانیه برام بود .
    وقتی کد بالا را در یک نخ اجرا میکنم (کد دو تا نخ را توی یکی میزارم) ، یعنی کد زیر را مینویسم :


    private void TransparentControl4_Click(object sender, EventArgs e)
    {
    for (long i = 0; i < 10000000000; i++)
    {
    }


    for (long j = 0; j < 10000000000; j++)
    {
    }


    MessageBox.Show("main thread loop finished");
    }



    اولا که مشخص هست در یک هسته اجرا میکنه و دوما اینکه زمان اجراش بیش از 55 ثانیه میشه .



    اما سئوالم اینه که اولا گاها جاهایی دیدم که میگن که نخ هایی که با هم اجرا میکنیم (مثل کد اولی در بالا) ، بصورت همزمان (در دو یا چند هسته ی فیزیکی یا منطقی) اجرا نمیشن بلکه در 1 هسته ی منطقی اجرا میشن اما سوئیچ روی شون بصورت مدام انجام میشه . پس این گفته ، غلط هه دیگه . درست میگم؟
    حالا اگه این نخ ها را به 3 تا نخ برسونین و با هم اجرا کنین ، در 3 هسته (ی منطقی) بصورت همزمان اجرا میشه و 4 تا در 4 هسته و همینطور به تعداد نخ هایی که ایجاد میکنید ، در هسته های منطقی مختلف ، بصورت همزمان اجرا میشه .


    و سئوال دوم اینکه پس اگه Thread و نخ ها را وقتی با هم اجرا میکنیم ، توی هسته های مختلف بصورت همزمان اجرا میشن ، پس کلاس Parallel دیگه به چه کاری میاد و به چه دردمون میخوره؟
    یا به عبارتی ، بنابراین ، تفاوت کلاس Thread و Parallel در کجاست و چه زمانی از کلاس Thread و چه زمانی از کلاس Parallel استفاده میشه و موارد استفاده ی هر کدوم ، در کجاست؟
    چون Parallel را تا جایی که میدونستم برای این بود که کدهاش بصورت موازی در هسته های مختلف ، بصورت همزمان اجرا میشه ، حال اینکه این کار با کلاس Thread هم انجام میشه .


    سوم اینکه (هر چند ربط مستقیمی به این سئوالات نداره) درباره ی kernel time در task manager کسی میدونه توضیح بده؟ این ، همون مقدار انتظار یا سربار اون هسته ی منطقی را نمایش میده؟
    آخرین ویرایش به وسیله SajjadKhati : دوشنبه 04 آذر 1398 در 11:09 صبح

تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: چهارشنبه 13 بهمن 1395, 00:04 صبح
  2. پاسخ: 3
    آخرین پست: دوشنبه 27 خرداد 1392, 12:26 عصر
  3. سوال : ساخت پایگاه داده بصورت تک فایل مستقل بدون پسورد ؟!
    نوشته شده توسط mf.designing در بخش امنیت در SQL Server
    پاسخ: 2
    آخرین پست: پنج شنبه 29 فروردین 1392, 17:09 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •