Delphi 2006 ve Indy 10 kullanıyorum. Bir form oluşturun ve bir IdHttpServer bileşenini bırakın. Sunucu aktif ayarlamak için form için bir OnCreate olayını olun ve ben sunucunun OnCommandGet için bu satırları girin:Delphi/Indy IdHttpServer çok iş parçacıklı değil mi?
procedure TForm3.IdHTTPServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
Beep;
Sleep(10000);
AResponseInfo.ContentText := DateTimeToStr(Now);
end;
Not 10 saniye boyunca uyku.
Daha sonra 2 tarayıcı kullanarak Firefox ile test ediyorum. İlk önce "localhost" a bağlanıyorum ve hemen bir bip sesi duyuyorum. Daha sonra 2. tarayıcıya geçiyorum ve localhost'a (10 saniyeden daha az) bağlanmasını sağlayın, ancak hemen bip sesini duymuyor. 1. isteğin tamamlanmasını bekler, sonra bip sesi çıkarır ve 10 saniye daha bekler.
Bu bileşenlerin çok iş parçacıklı olduğunu düşündüm? Olduğunu düşündüğüm şekilde davranmasını sağlayacak bazı özellikler var mı (her iki istek de hemen cevaplanacaktır).
Her öğenin ContentText değeri için Format ('% d% d', [MainThreadID, GetCurrentThreadID]) döndürerek, aynı konu üzerinde çalışıp çalışmadığını kontrol edebilirsiniz. Gerçekten çok iş parçacıklıysa, her istekte aldığınız iki değer birbirinden farklı olacak ve her iki yanıtın ikinci değerleri de muhtemelen farklılık gösterecektir. –
Eğer bir alternatifi ilginizi çekebilirsem: http://xxm.sourceforge.net/, üzerinde çalıştığım bir projeyi bu ve benzer sorunları çözebilecek açık kaynağa açtım. Henüz Delphi 2006'da denemedim, Delphi 7'ye dayanıyor, ama biraz şansla işe yaramalı. –