TsgcWebSocketServer_HTTPAPI › Özellikler › QueueOptions
İş parçacıkları arasındaki çekişmeyi önlemek için giden mesajları dahili bir bağlantı başına kuyruk aracılığıyla serileştirir.
property QueueOptions: TsgcWSQueueServer_Options read FQueueOptions write SetQueueOptions;
Text.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone
Etkinleştirildiğinde, mesajlar dahili bir queue'ya yerleştirilir ve çağıranın iş parçacığı yerine bağlantı iş parçacığı bağlamında gönderilir. Bu, birden çok iş parçacığı aynı bağlantıya aynı anda yazdığında gereken kilitlemeyi ortadan kaldırır. Her mesaj türü (Text, Binary, Ping), kendi Level özelliğine sahip bir alt nesnedir ve bu özellik bağımsız bir öncelik atar: qmNone queue'yu atlar (varsayılan), qmLevel0 önce işlenir, sonra qmLevel1 ve son olarak qmLevel2. Örneğin, Text.Level ve Binary.Level'i qmLevel2'ye ve Ping.Level'i qmLevel1'e ayarlamak, ping'lerin sıradan trafikten önce teslim edilmesini garanti eder.
QueueOptions, HTTP.sys sunucusu tarafından desteklenmez. Kuyruk, sunucu başlarken kapatılır: üç düzey de qmNone olarak sıfırlanır, OnError olayı bunu bildirir ve iletiler çağıran iş parçacığında satır içi olarak yazılır. Sunucu zaten dinlemedeyken atanan bir düzey, her yeni bağlantıda aynı şekilde sıfırlanır. http.sys altyapısı IOCP tamamlamalarıyla çalışır ve bir kuyruğu boşaltacak bağlantı başına döngüsü yoktur, bu nedenle kuyruğa alınan bir ileti sokete hiçbir zaman ulaşmaz.
oServer := TsgcWebSocketServer_HTTPAPI.Create(nil);
// QueueOptions is not supported here, the three levels are reset to qmNone on start
oServer.Active := true;