Multitask Temel Algoritma

akiş_diyagrami

Bu yazıda, multitask algoritmasını kullanabilmemizi sağlayacak olan en temel algoritmayı, genel bir akış diyagramında görüp açıklamaya çalışalım:

Öncelikle okunmasını önerdiğim yazım: “Multitask Tekniğini Kullanalım!”

   Kullanacağımız uzun soluklu fonksiyonları bu temel yapıda tutmamız, multitask tekniğinin faydalarını görmemize yeterli olacaktır. Halihazır da bulunan fonksiyon veya metodları bu yapıya dönüştürmek bizim için kolay bir uğraş olabilir.

   Bu yapıdaki fonksiyonlar rastgele ana döngüde çağrılsa bile, birbirleri ile uyumlu şekilde çalışabilirler. Diğer bir deyişle program yazma kolaylığı elde edilmiş olunur. Bunun devamında kompleks programlar yazarken dahi, üstesinden daha kolay gelinebilir. Donanım daha verimli kullanılmış olunur.

Resim üzerinde görülen fonksiyon; 1,2,3,4 olmak üzere numaralandırılmıştır.

1.Fonksiyon Koşullandırması:

Fonksiyonun çalışmasına ihtiyacımız yok ise gereksiz yere vakit kaybının önüne geçmek için fonksiyonun çalışması için koşullandırmalar yapabiliriz. Örnek_olarak: Fonksiyon saniyede bir kez yürütülsün ve veya başka bir fonksiyonun bitmesini beklesin ve veya dışarıdan bir kesme gelsin, şeklinde koşullandırmalar yapılabilinir.

Fonksiyon koşullandırmaları, geliştirilmeye açık programlar yazabilmek için ön şart olarak düşünülebilinir. Koşullandırma grubundan onay gelmez ise fonksiyondan direk olarak çıkılır. Belirlenen tüm koşullar onaylanırsa bir sonraki aşamaya (2.aşamaya) geçilir.

2.Fonksiyon dallandırılması:

Fonksiyonun hangi parçasından devam edileceğine karar verilir. Fonksiyon için özel ve static olarak belirlenen “fonksiyon içi adresleme” verileri kontrol edilerek karar verme işlemi gerçekleştirilir. Karar verildikten hemen sonra dallanma işlemi gerçekleştirilir. Bu yapının kurulması için “C” dilinde switch/case yapısı ilk tercihlerden olabilir.

3.Fonksiyon Parçaları:

Hedef odaklı sıralı görevleri bir fonksiyon altında topluyoruz. O halde bu fonksiyonları aynı şekilde parçalar şeklinde de görebiliriz. Yani fonksiyonları uygun gördüğümüz noktalarda parçalara ayırabiliriz.

Özellikle; bir fonksiyon parçasında, boşa zaman geçmesini istediğimiz zamanlar olabilir. Olduğu yerde dönmesi yerine, fonksiyonda kaldığı yeri kayıt ettirip direk çıkmasını sağlarız. Tekrar fonksiyona geri döndüğü zaman 1 ile 2 aşamaları tekrarlanır ve kalınan fonksiyon parçasına dallanır. Bu fonksiyon parçasında yeterli sürenin geçip geçmediği kontrol edilir … Şeklinde bir mekanizma kurulur. Böylece sıkça kullanılabilen “delay_ms();” benzeri komutların gereksiz yükünden kurtulmuş olunur.

Farklı amaçlar doğrultusunda, fonksiyonu istediğimiz şekilde parçalara ayırabiliriz. Örnekte sadece amaçlardan bir tanesine değinmiş olduk. Periyodikleştirme amaçlı da kullanabiliriz. Bu konuya ilerleyen yazılarda örnekler içerisinde değinebiliriz.

 4.Fonksiyon Sonlandırma:

Fonksiyonla ilgili veriler, belirlenmiş olan hafızalara kayıt edilir. Fonksiyon, kendisi hakkında rapor verileri oluşturur. Fonksiyonun bu verileri; o anki durumu hakkında bilgi verecek ve ortamda meydana gelmesini istediği durumları meydana getirecek şekilde oluşturur.

Bu rapor veriler kontrolcü fonksiyonlar tarafından kontrol edilebilir. İşlerin yolunda olup olmadığı görülebilinir ve veya fonksiyonun diğer fonksiyonlarla alakası sağlanabilinir.

“Multitask Temel Algoritma” için 1 yorum

Bir Cevap Yazın

Or

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir