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

  • GFX Tutorials

    GFX Tutorial

    12 AĞUSTOS 2013
  • MkElite

    MkElite

    13 NİSAN 2012
  • Visual Life

    Visual Life

    3 Temmuz 2006