Tam Sürümünü Görmek İçin : Aynı anda birden çok programı sürekli çalıştırmak
Arkadaşlar Linux makina üzerinde sistem açik oldugu surece 5 adet programcıgı sürekli çalıştırmak istiyorum.
Bunu thread ile tekbir döngu kullanarak yaparsam en uzun program bitmeden diger programlar tekrar çalışamıyor.
Gene thread ile ama her thread fonksiyoununda ayri sonsuz döngü ile yaparsam, bu seferde sistem aşırı derecede yavaşlıyor.
Bu işi hızlı ve sorunsuz nasıl halledebiliriz ...
seninkiler selfish thread denilen türden.:)
sonsuz döngü içerisinde bir yerde,
thread'i kısa bir süre durdurup, sisteme soluk aldırman lazım.
Yani while(1) kullanan thread fonksiyonlarinin içine
usleep(250);
Yazmak işlemimidir tek çözüm ?
acehreli
03/04/2007, 20:30
Tek cozum degil... Ayrica neden 250? Bunu bilemeyebiliriz. Cogu zaman bir isletim dizisi, baska isletim dizisinin isi bitene kadar bekler.
while(1)'in icinde is yaparken bir olay bekliyorsun degil mi? Iste olay olana kadar CPU'yu kullanmayacagini isletim sistemine bildirirsin (usleep bir cozum). Kullandigin kutuphane bu konuda (thread synchronization) neler sunuyorsa onlari kullanabilirsin.
Ali
sleep(); fonksiyonunu dene .Programın çalışmasını test et ona göre sleep'e değer ata.
5 program da ayni kod icerisinde baslatmak zorunda degilsin.
komut &
seklinde programlari baslatip, arkaplanda calismaya birakabilirsin. Sistem, bu programin bitmesini beklemeden hemen bir sonraki satira gecip onu da calistirir. Yani komutlarin sonuna & koy.
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.