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

  • Baby Big Mouth

    Baby Big Mou

    5 Mart 2013
  • discokatze

    discokatze

    23 EYLÜL 2009
  • Doug Bernards

    Doug Bernard

    7 Kasım 2007