PDA

Tam Sürümünü Görmek İçin : Aynı anda birden çok programı sürekli çalıştırmak


yufyuf
03/04/2007, 15:27
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 ...


mr1yh1
03/04/2007, 18:33
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.

yufyuf
03/04/2007, 20:21
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

cshell
04/04/2007, 17:47
sleep(); fonksiyonunu dene .Programın çalışmasını test et ona göre sleep'e değer ata.

acemi
09/04/2007, 12:41
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.