SORU
29 AĞUSTOS 2008, Cuma


Bir semafor nedir?

Bir semafor sık Çoklu-işlem sorunlarını çözmek için kullanılan bir programlama kavramıdır. Topluluk sorum şu:

Bir semafor nedir ve nasıl kullanılır?

CEVAP
2 EYLÜL 2008, Salı


Bir gece kulübünde fedai olarak semafor düşünüyorum. Kulüpte bir seferde izin verilen insanların özel bir numarası vardır. Eğer kulüp doluysa kimse girmek için izin verilir, ama bir kişi ayrılır ayrılmaz başka bir kişi girebilir.

Sadece belirli bir kaynak için tüketicilerin sayısını sınırlamak için bir yol var. Örneğin, eşzamanlı sayısını sınırlamak için bir uygulama, bir veritabanı için çağırır.

Burada C çok pedagojik bir örnek :-)

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace TheNightclub
{
    public class Program
    {
        public static Semaphore Bouncer { get; set; }

        public static void Main(string[] args)
        {
            // Create the semaphore with 3 slots, where 3 are available.
            Bouncer = new Semaphore(3, 3);

            // Open the nightclub.
            OpenNightclub();
        }

        public static void OpenNightclub()
        {
            for (int i = 1; i <= 50; i  )
            {
                // Let each guest enter on an own thread.
                Thread thread = new Thread(new ParameterizedThreadStart(Guest));
                thread.Start(i);
            }
        }

        public static void Guest(object args)
        {
            // Wait to enter the nightclub (a semaphore to be released).
            Console.WriteLine("Guest {0} is waiting to entering nightclub.", args);
            Bouncer.WaitOne();          

            // Do some dancing.
            Console.WriteLine("Guest {0} is doing some dancing.", args);
            Thread.Sleep(500);

            // Let one guest out (release one semaphore).
            Console.WriteLine("Guest {0} is leaving the nightclub.", args);
            Bouncer.Release(1);
        }
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • buttheadgsxr1000

    buttheadgsxr

    24 Ocak 2008
  • Chaoticmoogle

    Chaoticmoogl

    13 ŞUBAT 2006
  • Damien Hayes

    Damien Hayes

    11 Mart 2008