Görevci by Kozmotronik v2.1.1
Küçük gömülü sistemler için çoklu görev (multi-tasking) yönetimi uygulaması
Yüklüyor...
Arıyor...
Eşleşme Yok

Veri Yapıları

struct  Bayrak
 

Makrolar

#define grvBAYRAK_ILKLE(b, s)
 
#define grvBAYRAK_BEKLE(g, b)
 
#define grvBAYRAK_IMLE(b)
 

Typedef'ler

typedef struct Bayrak bayrak_t
 Kolaylık sağlamak için Bayrak tür tanımlaması.
 

Ayrıntılı tanımlama

Bu modül sayıcı bayrakları görevlerin üzerinde gerçekler. Bayraklar birkaç işlem sağlayan bir senkronizasyon ilkelleridir: bekle ve imle (wait and signal). Bekleme işlemi bayrak sayıcısını yoklar ve sıfırsa görevi bloklar. İmleme işlemi bayrak sayıcısını arttırır ama görevi bloklamaz. Başka bir görev imlenen bayrağı beklemek için bloklanmışsa, bloklanan görev, yeniden çalışabilir olacaktır.

Bayraklar, izleyiciler, ileti tamponları ve bağlı tamponlar gibi daha yapılandırılmış senkronizasyon ilkellerini gerçeklemek için kullanılabilirler.

Makro Dokümantasyonu

◆ grvBAYRAK_BEKLE

#define grvBAYRAK_BEKLE ( g,
b )

Bir bayrağı bekler.

Koşut (paralel) çalışan birden fazla görevden bir kaynağa erişirken; bayrak ilklenirken belirlenen erişim sayısına bağlı olarak erişimi ilk alan görev veya görevler kaynağa veya veriye erişim sağlarken, erişim sınırı dolduktan sonra erişen görev veya görevler bloklanacak, ilk erişim alan görevler erişimi grvBAYRAK_IMLE() ile saldıktan sonra bloklanan görevler artan erişim sınırı kadar kaynağa veya veriye erişebilecektir. Kullanımı basitçe şöyledir:

bayrak_t bayrak;
char korunanKaynak;
//...
// Erişimi almaya çalış; alamazsa bloklanır.
grvBAYRAK_BEKLE(gorevTutucu, &bayrak);
// Kaynağa erişim sağlandı, artık değiştirilebilir.
korunanKaynak = 'A';
// İşlem bitince diğer görevlerin erişebilmesi için erişimi sal.
grvBAYRAK_IMLE(gorevTutucu, &bayrak);
#define grvBAYRAK_IMLE(b)
Definition bayrak.h:141
#define grvBAYRAK_BEKLE(g, b)
Definition bayrak.h:115
Definition bayrak.h:59
Parametreler
gBayrağı alan görevin tutucusu.
bBayrağa referans.

◆ grvBAYRAK_ILKLE

#define grvBAYRAK_ILKLE ( b,
s )

Bir bayrağı ilkler.

Bayraklar kullanılmadan önce ilklenmelidirler. İlklenmeyen bayraklar belirsiz veya beklenmeyen sonuçlara neden olabilir. Bir bayrak basitçe şöyle ilklenir:

bayrak_t bayrak;
//...
// main döngüsünde veya uygun bir yerde ilkleme yapılır.
grvBAYRAK_ILKLE(&bayrak, 1);
#define grvBAYRAK_ILKLE(b, s)
Definition bayrak.h:85
Parametreler
bBayrağa referans.
sSayım, yani bir kaynağa aynı anda erişebilecek görev sayısı.

◆ grvBAYRAK_IMLE

#define grvBAYRAK_IMLE ( b)

Bir bayrağı imler.

Birçok işletim sistemindeki signal veya give gibi işlevlere benzer. Bir görev eriştiği kaynakla işlem yapmayı bitirince, başka görevlerin de bu kaynağa erişebilmesi için bu makroyu çalıştırarak erişimi salar. Kullanımı basitçe şöyledir:

bayrak_t bayrak;
char korunanKaynak;
//...
// Erişimi almaya çalış; alamazsa bloklanır.
grvBAYRAK_BEKLE(gorevTutucu, &bayrak);
// Kaynağa erişim sağlandı, artık değiştirilebilir.
korunanKaynak = 'A';
// İşlem bitince diğer görevlerin erişebilmesi için erişimi sal.
grvBAYRAK_IMLE(gorevTutucu, &bayrak);
Parametreler
bBayrağa referans.