اثر پروانه ای

برنامه نویسی حرفه ای کامپیوتر به زبان سی شارپ - لیست کامل کلمات کلیدی در ʚĭɞ - ßữʈʨɾflỵ ⓔⓕⓕⓔⓒⓣ

اثر پروانه ای

برنامه نویسی حرفه ای کامپیوتر به زبان سی شارپ - لیست کامل کلمات کلیدی در ʚĭɞ - ßữʈʨɾflỵ ⓔⓕⓕⓔⓒⓣ

اثر پروانه ای

اثر پروانه‌ای نام پدیده‌ای است که به دلیل حساسیت سیستم‌های آشوب‌ناک به شرایط اولیه ایجاد می‌شود. این پدیده به این اشاره می‌کند که تغییری کوچک در یک سیستم آشوب‌ناک چون جو سیارهٔ زمین (مثلاً بال‌زدن پروانه) می‌تواند باعث تغییرات شدید (وقوع توفان در کشوری دیگر) در آینده شود.

ایده‌ٔ این‌که پروانه‌ای می‌تواند باعث تغییری آشوبی شود نخستین بار در ۱۹۵۲ در داستان کوتاهی به نام آوای تندر اثر ری بردبری مطرح شد. عبارت «اثر پروانه ای» هم در ۱۹۶۱ در پی مقاله‌ای از ادوارد لورنتس به وجود آمد. وی در صد و سی و نهمین اجلاس ای‌ای‌ای‌اس در سال ۱۹۷۲ مقاله‌ای با این عنوان ارائه داد که «آیا بال‌زدن پروانه‌ای در برزیل می‌تواند باعث ایجاد تندباد در تکزاس شود؟»

آخرین نظرات
  • ۱۳ بهمن ۰۱، ۱۵:۳۱ - حسنا سادات و سما سادات
    عالی
  • ۲
  • ۰

کلیدواژه volatile

کلمه کلیدی volatile (فرّار) نشان می دهد که یک فیلد می تواند توسط چندین ریسمان (thread) که همزمان درحال اجرا هستند، دستکاری شود. فیلدهایی که بصورت volatile اعلان شده اند، مورد بهینه سازی های کامپایلری ای که فرضشان دسترسی تک ریسمانی است قرار نمی گیرند. این کار تضمین می کند که مقدار فیلد در همه زمان ها به روز ترین مقدار است.

اصلاحگر volatile معمولا" برای فیلدی که بدون بیان lock توسط چندین ریسمان مورد دسترسی قرار می گیرد، استفاده می شود.

کلمه کلیدی volatile را می توان رو فیلدهایی از نوع های زیر اعمال کرد:

  • نوع های مرجع.
  • نوع های اشاره گر (در یک زمینه نا امن (unsafe contenxt)). توجه کنید که با اینکه اشاره گر خودش می تواند volatile باشد، شیئی که اشاره گر به آن اشاره می کند نمی تواند volatile باشد. به بیانی دیگر، شما نمی توانید "اشاره گر به volatile" اعلان کنید.
  • نوع هایی مثل sbyte، byte، short، ushort، int، uint، char، float و bool.
  • نوع شمارشی ای که نوع پایه آن یکی از نوع های byte، sbyte، short، ushort، int یا uint باشد.
  • پارامتر نوع جنریکی که بصورت نوع مرجع شناخته شده باشد.
  • IntPtr و UIntPtr .

کلمه کلیدی volatile را فقط می توان به فیلدهای کلاس یا ساختار اعمال کرد. متغیرهای محلی را نمی توان بصورت volatile اعلان کرد.

مثال

مثال زیر چگونگی اعلان یک فیلد متغیر سراسری (public) را بصورت volatile نشان می دهد.

class VolatileTest
{
    public volatile int i;

    public void Test(int _i)
    {
        i = _i;
    }
}

مثال زیر توضیح می دهد که چگونه یک ریسمان کمکی (auxiliary) یا کارگر (worker) را می توان برای انجام پردازش موازی با ریسمان اولیه تولید کرد.

using System;
using System.Threading;

public class Worker
{
    // This method is called when the thread is started.
    public void DoWork()
    {
        while (!_shouldStop)
        {
            Console.WriteLine("Worker thread: working...");
        }
        Console.WriteLine("Worker thread: terminating gracefully.");
    }
    public void RequestStop()
    {
        _shouldStop = true;
    }
    // Keyword volatile is used as a hint to the compiler that this data
    // member is accessed by multiple threads.
    private volatile bool _shouldStop;
}

public class WorkerThreadExample
{
    static void Main()
    {
        // Create the worker thread object. This does not start the thread.
        Worker workerObject = new Worker();
        Thread workerThread = new Thread(workerObject.DoWork);

        // Start the worker thread.
        workerThread.Start();
        Console.WriteLine("Main thread: starting worker thread...");

        // Loop until the worker thread activates.
        while (!workerThread.IsAlive) ;

        // Put the main thread to sleep for 1 millisecond to
        // allow the worker thread to do some work.
        Thread.Sleep(1);

        // Request that the worker thread stop itself.
        workerObject.RequestStop();

        // Use the Thread.Join method to block the current thread 
        // until the object's thread terminates.
        workerThread.Join();
        Console.WriteLine("Main thread: worker thread has terminated.");
    }
    // Sample output:
    // Main thread: starting worker thread...
    // Worker thread: working...
    // Worker thread: working...
    // Worker thread: working...
    // Worker thread: working...
    // Worker thread: working...
    // Worker thread: working...
    // Worker thread: terminating gracefully.
    // Main thread: worker thread has terminated.
}

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی