Aracılığıyla paylaş


CSemaphore sınıfı

Sınıfın bir nesnesi CSemaphore temsil eden "semafor" — bir tutar erişmek için bir veya birkaç işlem içinde şu anda belirtilen kaynağa erişen iş parçacığı sayısı sınırlı sayıda iş parçacığı veren bir eşitleme nesnesi.

class CSemaphore : public CSyncObject

Üyeler

78w43c88.collapse_all(tr-tr,VS.110).gifOrtak Oluşturucusu

Ad

Description

CSemaphore::CSemaphore

Yapıları bir CSemaphore nesnesi.

Notlar

Semaforlar yalnızca sınırlı sayıda kullanıcının destekleyebilir paylaşılan bir kaynağa erişimi denetlerken faydalıdır.Geçerli sayısı CSemaphore nesne izin verilen ek kullanıcı sayısıdır.Bu sayı sıfıra ulaştığında, tüm girişimleri tarafından denetlenen kaynağı kullanacak biçimde CSemaphore nesne bir sistem sıraya eklenir ve zaman aşımına bunlar kadar bekleyin veya sayısı 0'ın üzerinde üstüne.Denetlenen kaynağı aynı anda erişebilecek en fazla sayısını inşaat sırasında belirtilen CSemaphore nesnesi.

Kullanmak için bir CSemaphore nesne, değiştirmezler CSemaphore nesne gerektiğinde.Beklemek istiyor semafor adını belirtin ve uygulamanızın başlangıçta kendisine ait.Kurucu döndüğünde semafor sonra erişebilirsiniz.Call CSyncObject::Unlock bitince kontrollü kaynağa erişme.

Alternatif bir yöntem kullanmak için CSemaphore nesnedir türünde bir değişken eklemek için CSemaphore denetlemek istediğiniz sınıfı için veri üyesi olarak.Denetlenen Nesne oluşturma sırasında çağırdığınız CSemaphore ilk belirterek veri üyesi erişim sayısı, en fazla erişim sayısını, semafor (işlem sınırları boyunca kullanılacak olan varsa) adını ve güvenlik özniteliklerini istenen.

Tarafından denetlenen kaynaklara erişmek için CSemaphore bu şekilde önce her iki türde bir değişken oluşturmak CSingleLock veya CMultiLock , kaynağın erişim üye işlev içinde.Kilit nesnenin çağrısı Lock üye işlevi (örneğin, CSingleLock::Lock).Bu noktada, kendi iş parçacığı ya da kaynağa erişmek, serbest bırakılması ve erişim ya da serbest bırakılması için kaynak ve zaman aşımı, kaynağa erişmek başarısız beklemek kaynak için bekleyin.Her durumda, kaynak, iş parçacığı için güvenli bir biçimde erişilmedi.Kilit nesnenin kaynağı serbest bırakmak için kullanın Unlock üye işlevi (örneğin, CSingleLock::Unlock), veya kilit Nesne kapsamı dışında kalan izin verin.

Alternatif olarak, oluşturabileceğiniz bir CSemaphore tek başına object ve denetlenen bir kaynağa erişmeyi denemeden önce açıkça erişim.Bu, kaynak kodunuzu okuyan birine clearer sırasında daha fazla hataya yöntemidir.

Nasıl kullanılacağı hakkında daha fazla bilgi için CSemaphore nesneleri, makalesine bakın çok iş parçacığı: eşitleme sınıfları nasıl.

Devralma hiyerarşisi

CObject

CSyncObject

CSemaphore

Gereksinimler

Başlık: afxmt.h

Ayrıca bkz.

Başvuru

CSyncObject sınıfı

Hiyerarşi grafik