Aracılığıyla paylaş


Windows Yuvaları: engelleme

Bu makale ve iki Yardımcısı makaleleri Windows Sockets programlama çeşitli sorunları açıklamaktadır.Bu makalede, engellemeyi kapsar.Diğer sorunlar makalelerinde ele alınmıştır: Windows Sockets: bayt sırası ve Windows Sockets: dönüştürme dizeleri.

Kullanıyorsanız veya sınıfından türeyen CAsyncSocket, bu sorunları kendiniz yönetmek istemektedir.Kullanıyorsanız veya sınıfından türeyen CSocket, mfc yönetir bunları sizin için.

Engelleme

Bir yuva "engelleme modu" veya "yapmayan modu" olabilir Kullanıcılar kendi eylem işlemini tamamlayana kadar işlevleri engelleme (veya eşzamanlı) modunda yuva döndürmeyin.Bu, işlevi çağrıldı yuva hiçbir şey yapamaz çünkü engelleme olarak adlandırılır — engellendi — çağrı dönünceye kadar.Çağrı Al üye işlevi, örneğin, uzun gönderen uygulama göndermesini beklediği gibi tamamlamak için uzunca bir süre (Bu kullanıyorsanız, CSocket, veya CAsyncSocket engelleme ile).Bir CAsyncSocket bir nesnedir (zaman uyumsuz olarak çalışan) yapmayan modunda çağrı hemen döndürür ve geçerli hata kodu ile alınabilir GetLastError üye işlev wsaewouldblock, çağrı engellediğiniz gösteren vardı, hemen nedeniyle modu döndürülmüyor.(CSocket verir asla wsaewouldblock.Sınıf için engelleme yönetir.)

32-Bit ve 64-bit işletim sistemlerinde (örneğin, Windows 95 veya Windows 98)'den (örneğin, Windows 3.1) 16-bit işletim sistemleri altında yuva davranışı farklıdır.Aksine 16-bit işletim sistemleri 32-bit ve 64-bit işletim sistemleri preemptive görevli kullanın ve çoklu kullanım sağlar.32-Bit ve 64-bit işletim sistemleri altında ayrı parçacıkları, yuva yerleştirebilirsiniz.Bir iş parçacığı yuvası, uygulamanızın diğer etkinliklerle birlikte oynanmasını engellemesini compute zamanınızı harcamak olmadan ve engelleyebilirsiniz.Makale çok iş parçacıklı programlama hakkında daha fazla bilgi için bkz: çok iş parçacığı.

[!NOT]

Çok iş parçacıklı uygulamalarda engelleme yapısı kullanabilirsiniz CSocket kullanıcı arabirimi yanıt verme yeteneğini etkilemeden tasarım programınızın basitleştirmek için.Ana iş parçacığında kullanıcı etkileşimlerini işleyen tarafından ve CSocket diğer iş parçacığı işleme, bu mantıksal işlemler ayırabilirsiniz.Çok iş parçacıklı değil bir uygulamada, bu iki etkinliği birleştirilmiş ve gerekir genellikle kullanarak anlamına gelir tek bir iş parçacığı, ele CAsyncSocket şekilde isteğe bağlı veya geçersiz kılma iletişim isteklerini işleyebilir CSocket::OnMessagePending uzun zaman uyumlu etkinliği sırasında kullanıcı eylemleri işlemek için.

Bu tartışma kalan 16-bit işletim sistemleri programcıları:

Normal olarak kullanıyorsanız, CAsyncSocket, engelleme işlemlerini kullanmaktan kaçının ve zaman uyumsuz olarak yerine çalışması gerekir.Noktasından, aldığınız zaman uyumsuz işlemler bir wsaewouldblock hata kodu arama sonra Al, kadar bekleyin, sizin OnReceive üye işlevi, yeniden okuyabilir bildirmek için verilir.Zaman uyumsuz çağrı geri yuva 's uygun geri bildirim işlevi gibi çağırarak yapılan OnReceive.

Windows altında engelleme çağrı hatalı yöntem olarak kabul edilir.Varsayılan olarak, CAsyncSocket destekler zaman uyumsuz çağrı ve gereken yönetmek geri bildirimleri kullanarak kendiniz engelleme.Sınıf CSocket, diğer taraftan, zaman uyumludur.Windows iletileri pumps ve sizin için engelleme yönetir.

Engelleme hakkında daha fazla bilgi için bkz: Windows Sockets belirtimi."İşlevleri," daha fazla bilgi için bkz: Windows Sockets: Yuva bildirimleri ve Windows Sockets: Yuva sınıflardan türetmek.

Daha fazla bilgi için bkz:

Ayrıca bkz.

Başvuru

CAsyncSocket::OnSend

Kavramlar

mfc, Windows Sockets