Paket | flash.concurrent |
Sınıf | public final class Condition |
Miras Alma | Condition Object |
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11.5, AIR 3.5 |
Aşağıda, bir Condition nesnesinin kullanılması için bir olası iş akışı verilmiştir:
- Bir Condition nesnesini kullanmadan önce ilk worker (işçi), Mutex nesnesinin
lock()
veyatryLock()
yöntemlerini çağırarak durumun ilişkili mutex'inin sahipliğini almalıdır. - Worker (işçi) öğesinin kodu, durum false olana kadar paylaşılan kaynakta çalışır, bu da worker (işçi) öğesinin paylaşılan kaynakla daha fazla çalışma gerçekleştirmesini önler. Örneğin, paylaşılan kaynak işlenecek bir veri kümesi ise, işlenecek veri kalmadığında worker (işçi) daha fazla çalışma gerçekleştiremez.
- Bu durumda worker (işçi) öğesinin çalıştırılmasını duraklatmak ve mutex sahipliğini bırakmak için Condition nesnesinin
wait()
yöntemini çağırın. - Bazı durumlarda ikinci bir worker (işçi) mutex sahipliğini alır. Mutex kullanılabilir olduğundan, ikincil worker (işçi) öğesinin paylaşılan kaynak üzerinde çalışması güvenlidir. İkinci worker (işçi), ilk worker (işçi) öğesinin çalışmasını tekrar gerçekleştirebilmesi açısından durumu uygulamak için gerekenleri yapar. Örneğin, ilk worker (işçi) öğesinde işlenecek herhangi bir veri yoksa ikinci worker (işçi) paylaşılan kaynağa, işlenecek daha fazla veri aktarır.
- Bu noktada ilk worker (işçi) öğesinin çalışmasıyla ilgili durum artık true değerindedir ve ilk worker (işçi) öğesine, durumun uygulandığı bildirilmelidir. İkinci worker (işçi) öğesinin kodu, ilk worker (işçi) öğesine bunu bildirmek için Condition nesnesinin
notify()
yöntemini veyanotifyAll()
yöntemini çağırır. - İkinci worker (işçi) öğesinin,
notify()
yöntemini çağırmanın yanı sıra mutex sahipliğini bırakması gerekir. Bunu Mutex nesnesininunlock()
yöntemini veya Condition nesnesininwait()
yöntemini çağırarak gerçekleştirir. İlk worker (işçi)wait()
yöntemini çağırdığından mutex sahipliği, ilk worker (işçi) öğesine döner. Ardından ilk worker (işçi) öğesindeki kod çalıştırması,wait()
çağrısından sonra bir sonraki kod satırı ile tekrar devam eder.
Condition sınıfı, worker (işçi) öğeleri arasında kopyalanan değil, paylaşılan özel nesne türlerinden biridir. Worker nesnesinin setSharedProperty()
yöntemini çağırarak veya bir MessageChannel nesnesini kullanarak bir worker (işçi) öğesinden başka bir worker (işçi) öğesine bir durum ilettiğinizde, her iki worker (işçi) öğesinin de çalışma zamanının belleğinde aynı Condition nesnesine referansı vardır.
İlgili API Öğeleri
Özellik | Tanımlayan: | ||
---|---|---|---|
constructor : Object
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru. | Object | ||
isSupported : Boolean [statik] [salt okunur]
Condition sınıfının geçerli platform için desteklenip desteklenmediğini belirtir. | Condition | ||
mutex : Mutex [salt okunur]
Bu durumla ilişkili mutex. | Condition |
Yöntem | Tanımlayan: | ||
---|---|---|---|
Yeni bir Condition örneği oluşturur. | Condition | ||
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir. | Object | ||
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir. | Object | ||
Bu Condition nesnesinin temsil ettiği durumun uygulandığını ve mutex sahipliğinin, bu durumda beklemekte olan bir sonraki worker (işçi) öğesine (varsa) döndürüleceğini belirtir. | Condition | ||
Bu Condition nesnesinin temsil ettiği durumun uygulandığını ve mutex sahipliğinin, bu durumda beklemekte olan tüm worker (işçi) öğelerine döndürüleceğini belirtir. | Condition | ||
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. | Object | ||
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar. | Object | ||
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür. | Object | ||
Belirtilen nesnenin dize olarak temsil edilen halini döndürür. | Object | ||
Belirtilen nesnenin temel değerini döndürür. | Object | ||
Bu Condition nesnesinin temsil ettiği durumun uygulanmadığını ve geçerli worker (işçi) öğesinin, daha fazla kod çalıştırabilmek için beklemesi gerektiğini belirtir. | Condition |
isSupported | özellik |
isSupported:Boolean
[salt okunur] Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11.5, AIR 3.5 |
Condition sınıfının geçerli platform için desteklenip desteklenmediğini belirtir.
Not: Mutex sınıfı desteklenmiyorsa Condition örneği oluşturulamaz ve bu özellik false
değerindedir.
Uygulama
public static function get isSupported():Boolean
mutex | özellik |
Condition | () | Yapıcı |
notify | () | yöntem |
public function notify():void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11.5, AIR 3.5 |
Bu Condition nesnesinin temsil ettiği durumun uygulandığını ve mutex sahipliğinin, bu durumda beklemekte olan bir sonraki worker (işçi) öğesine (varsa) döndürüleceğini belirtir.
Bu yöntemin çağrılması mutex sahipliğinin otomatik olarak bırakılmasına neden olmaz. notify()
yöntemini çağırdıktan sonra mutex sahipliğini iki yoldan birini kullanarak açık bir şekilde bırakmanız gerekir: Geçerli worker (işçi), mutex öğesine artık ihtiyaç duymuyorsa Mutex.unlock()
yöntemini, diğer worker (işçi) öğeleri çalışmalarını tamamladıktan sonra worker (işçi) öğesinin mutex sahipliğini tekrar alması gerekiyorsa wait()
yöntemini çağırın.
Mutex kilidi bırakıldıktan sonra worker (işçi) öğeleri sırasında olan, wait()
yöntemini çağıran bir sonraki worker (işçi), mutex öğesini alır ve kod çalıştırmasını sürdürür.
Atar
IllegalOperationError — Geçerli worker (işçi), bu durumun mutex öğesine sahip değilse
|
notifyAll | () | yöntem |
public function notifyAll():void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11.5, AIR 3.5 |
Bu Condition nesnesinin temsil ettiği durumun uygulandığını ve mutex sahipliğinin, bu durumda beklemekte olan tüm worker (işçi) öğelerine döndürüleceğini belirtir.
Bu yöntemin çağrılması mutex sahipliğinin otomatik olarak bırakılmasına neden olmaz. notify()
yöntemini çağırdıktan sonra mutex sahipliğini iki yoldan birini kullanarak açık bir şekilde bırakmanız gerekir: Geçerli worker (işçi), mutex öğesine artık ihtiyaç duymuyorsa Mutex.unlock()
yöntemini, diğer worker (işçi) öğeleri çalışmalarını tamamladıktan sonra worker (işçi) öğesinin mutex sahipliğini tekrar alması gerekiyorsa wait()
yöntemini çağırın.
Mutex'in kilidi açıldığında bekleyen worker (işçi) öğeleri wait()
yöntemini çağırdıkları sıraya göre, teker teker sahipliği alır. wait()
yöntemini çağıran her worker (işçi), karşılığında mutex öğesini alır ve kod çalıştırma işlemini sürdürür. Bu worker (işçi) Mutex.unlock()
yöntemini veya wait()
yöntemini çağırdığında mutex sahipliği, bekleyen bir sonraki worker (işçi) öğesine geçer. Mutex sahipliğinin worker (işçi) öğeleri arasında geçiş yaptığı her seferde, geçiş tek bir atomik çalışma olarak gerçekleştirilir.
Atar
IllegalOperationError — Geçerli worker (işçi), bu durumun mutex öğesine sahip değilse
|
wait | () | yöntem |
public function wait(timeout:Number = -1):Boolean
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11.5, AIR 3.5 |
Bu Condition nesnesinin temsil ettiği durumun uygulanmadığını ve geçerli worker (işçi) öğesinin, daha fazla kod çalıştırabilmek için beklemesi gerektiğini belirtir. Bu yöntemin çağrılması geçerli worker (işçi) öğesinin çalıştırma iş parçacığını duraklatır ve durumun mutex sahipliğini bırakır. Bu adımlar tek bir atomik çalışma olarak uygulanır. Worker (işçi); diğer bir worker (işçi), bu Condition nesnesinin notify()
veya notifyAll()
yöntemlerini çağırana kadar duraklatılır.
Parametreler
timeout:Number (default = -1 ) — worker (işçi) öğesinin devam etmeden önce çalıştırmayı duraklatması gereken sürenin milisaniye cinsinden maksimum miktarı. Bu değer -1 (varsayılan) ise zaman aşımı olmaz ve çalıştırma süresiz olarak duraklar.
|
Boolean — Zaman aşımı geçtiğinden, yöntem döndürüldüyse true . Aksi takdirde yöntem false değerini döndürür.
|
Atar
IllegalOperationError — Geçerli worker (işçi), bu durumun mutex öğesine sahip değilse
| |
ArgumentError — timeout argümanı 0'dan az ise ve -1 değilse
| |
ScriptTimeoutError — yöntem, Flash Player'da ilkel worker (işçi) öğesindeki koddan çağırılırsa ve worker (işçi) komut dosyası zaman aşımı sınırından (varsayılan olarak 15 saniye) uzun duraklarsa
| |
Error — yöntem çağrılırsa ve worker (işçi) öğesinin çalıştırılmasını çağırma işlemi duraklatıldığında, bekleyen worker (işçi) sonlandırılır.
|
Tue Jun 12 2018, 01:09 PM Z