İstemcimde IOCP kullanıyorum, ancak sunucuya bağlanırken engelleme çağrısı kullanmak daha kolay. IOCP ile çalışırken, ConnectEx()
engelleme yerine WSAConnect()
engellemesinin kullanılmasında herhangi bir sorun var mı?WSAConnect() vs ConnectEx()
cevap
Evet, gayet iyi.
WSAConnect
numaralı telefona yapılan bir çağrı, bağlantı oluşturuluncaya/bir hata oluşana kadar kilitlenecektir. daha sonra, eşzamanlı IO yapabilir ve tamamlanmış paketler hakkında uygulamanızı IOCP ile bildirimde bulunabilirsiniz. IOCP, WSAConnect
ile ilgili herhangi bir paket vermeyecektir.
Bir başka nokta da IOCP'nin Çakışan IO ile heyecanla çalıştığıdır. İşleviniz OVERLAPPED
yapısının (WSAConnect
gibi) herhangi bir bellek konumunu tüketmiyorsa, IOCP'nin bu API çağrısı ile ilgilenmeyeceğinden emin olabilirsiniz. OVERLAPPED
tedarik edilmiş olsa bile, bu eylemin senkronize olmadığı ve IOCP'de yayınlanacağı anlamına gelmez.
C++ için Boost.Asio
ve C için libuv
'a bir göz atmak isteyebilirsiniz, bu durumda kod da taşınabilir olacaktır (ve daha az buğu). Başka bir intresting platformu çapraz platform olan microsoft Casablanca
, ama tecrübemde performans felaket.
* "OVERLAPPED sağlanmış olsa bile, bu eylemin zaman uyumsuz olduğu ve IOCP'de yayınlanacağı anlamına gelmez" * Bunun ne demek istediğini açıklayabilir misiniz Beyan. Örneğin, "WSARecv()" işlevini çağırabilir ve bir "OVERLAPPED" yapısını geçirebilir ve bir tamamlama paketi alamaz mıyım? Örneğin, – user6088487
, "ReadFile" ve "WriteFile", "OVERLAPPED" işlevini alır; Eşzamanlı olmayan eylemler için dosya tanıtıcısı açılmamışsa, bu eylem eşzamanlı olarak tamamlanır. –
da, IO paketlerini almak için Sapı IOCP'ye açıkça bağlamanız gerekir. Bu nedenle, IOCP'nin devam etmesini sağlamak için aşağıdaki koşullara ihtiyacınız olduğu sonucuna varmak için: 1) asenkron IO 2) destekleyicinin, tanıtıcıyı IOCP 3) 'OVERLAPPED' yapılarını kullanan işlevle ilişkilendirmesini sağlayabilirsiniz. koşullardan biri geçerli değilse, IOCP bu işlev için tekme yapmayacaktır –
- 1. ID vs UniqueID vs ClientID vs UniqueClientID vs StaticClientID?
- 2. & vs * ve | VS +
- 3. SpiderMonkey vs JavaScriptCore vs?
- 4. VS
- 5. VS
- 6. IDataErrorInfo vs ValidationRule vs Exception
- 7. cudaStreamSynchronize vs CudaDeviceSynchronize vs cudaThreadSynchronize
- 8. visualvm vs JProbe vs JProfiler
- 9. _mm_load_ps vs. _mm_load_pd vs. etc
- 10. pycuda vs theano vs pylearn2
- 11. is_numeric() vs is_float() vs is_int()
- 12. TextColor vs TextColorPrimary vs TextColorSecondary
- 13. GridView vs DataList vs için Repeater vs ListView 'in performansı
- 14. Qt: UI ile vs vs ile xml vs ile qml
- 15. Barındırma PowerShell: PowerShell vs. Runspace vs. RunspacePool vs. Pipeline
- 16. Python vs Jython vs IronPython vs wxPython arasındaki fark nedir?
- 17. Oyun geliştirmeye nereden başlayacaksınız? UIKit vs Core Animation vs QuartzCore vs OpenGL vs Cocos2D
- 18. XAML vs WPF vs Store App vs Phone App vs UWA
- 19. RhinoMock: Mocks Vs StrictMocks Vs DynamicMocks
- 20. Resim vs Fotoğraf vs. Görüntü - Adlandırma modelleri
- 21. Clojure listesi vs vektör vs set
- 22. grails def vs Nesne vs Void
- 23. CSS "::" vs ":" - sözde seçici vs psödo seçici?
- 24. arasındaki fark django.test.TestCase vs unittest vs django.utils.unittest.TestCase
- 25. Scala - plus kolon vs çift kolon (+: vs: :)
- 26. dotNetRDF VS Jena.NEt VS diğerleri ile Dotnet?
- 27. Python verimi vs vs multiple ifs
- 28. Blanket.js vs Istanbul-js vs JSCover
- 29. ASP.Net vs MVC vs WebAPI ve UseTaskFriendlySynchronizationContext
- 30. Bağımsız Yönetici Vs. İplik Vs. Mesos
Senkronize I/O istiyorsan neden IOCP kullanıyorsunuz? – Mat
@Mat Eğer iyi bir şekilde anlarsam OP, kolaylık sağlamak için 'bağlan' çağrısının engellenmesini önemser. @OP Hiçbir şey, hala engelleyici davranışlar elde ederken IOCP'yi kullanmak için 'ConnectEx' ile bir“ geleceği ”ve“ vaat ”bloke etmenizi engeller. –
@Veronika Prüssels * "@ Mat Eğer iyi anlarsam OP, kolaylık nedenleriyle engellemek için bağlanmak için aramayı önemser." * Evet, istediğim bu. * "OP Hiçbir şey, ConnectEx'i engelleyici bir gelecekle karıştırmanızı ve hala engelleme davranışını sürdürürken IOCP'yi kullanmaya söz vermenizi engeller." * Bu ne anlama geliyor ?! – user6088487