Alıntı (zekeriyadurmus):
> Hocam örnek bir kod verebilme şansınız var mı?
Hazırda bildiğim bir şey değil. (Her ne kadar bizim projede kullanılıyor olsa da kodun oralarına senelerdir bakmam gerekmiyor.)
libevent (aslında, libevent2) kullanan programların bir ana döngüsü oluyor. Üzerinde çalışılması gereken her konu bu döngüde beliriyor:
http://www.wangafu.net/~nickm/libevent-book/Ref3_eventloop.html
Çalışılması gereken her konuya şunlar ve başkaları dahil: timeout, bir alt programın işinin bitmiş olması (SIGCHLD), vs.
libevent multithreaded değildir ama aynı anda birden çok iş yapılmasına olanak verir. Bütün işlemci çekirdeklerine gerek duymayan uygulamalara elverişlidir.
Bir kere libevent kullanılacağın karar verilmişse D'de kullanmak için Deimos'taki ilintisini düşünmek gerek:
https://github.com/D-Programming-Deimos/libevent
Doğrusu, bunun yerine senin ilk programındaki 'while(1)' döngüsünü de kullanabilirsin. Timeout için bir thread başlatırsın ve zamanın dolup dolmadığını çeşitli yollarla belirlersin:
-
std.concurrency'nin receiveTimeout()'unu kullanarak (bu çağrının zaman kaybetmesini istemiyorsan süre olarak 0 saniye vermelisin)
-
Aynı modüldeki bir değişkenin değerinin true olup olmadığına bakarak (zamanlama thread'i o değişkeni true yapar)
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]