2011-07-31 7 views
7

Ben istiyorum. Neden ve ne zaman mesaj kullanmayı tercih etmeliyim ve neden/ne zaman kullanmak istememeliyim? Eğer geri arama esasen şimdi ortaya istediğinizdeboost :: asio :: io_service - neden post işlevini kullanıyorsunuz? Birisi sonrası işlevini kullanarak bana artılarını (ve eksileri) anlatmak için

+1

Bu ilginizi çekebilir "http://stackoverflow.com/questions/2326588/boost-asio-io-service-dispatch-vs-post" – Arunmu

+2

Bahşiş için teşekkürler! Daha önce bu bağlantıyı fark ettik ben genişletilmiş bir cevap umuyordum: Ben – eve

+0

@ArunMu :-) farkında değildi. – eve

cevap

8

Mesaj ancak mevcut bağlamda, çok faydalıdır. Nedenler şunlar olabilir:

  • Geçerli içerik kilitleri tutuyor ve bunların serbest bırakıldıktan sonra çağrılmasını istiyorsunuz. Bu, fonksiyonun bir kilitlenmeye neden olmadan bu kilitleri kendisinin almasına izin verir.

  • çağrı yığını geçerli iş parçacığı başka bir şekilde işlev için uygun olmayabilir

  • çok derin olabilir ve sonrası başka bir iş parçacığı işlevi zamanlama için uygun bir yoldur.

0

Sana dispatch() için post() karşılaştırarak tahmin ediyorum. Genelde, dispatch() hemen işleyicisi çağırabilir çünkü post(), daha güvenli olduğunu ve beklenmedik şekillerde sıraya etkinliklerde etkili olay güdümlü programlama riski vardır. Aynı zamanda, küçük bir çağrı yığını tutmak ve (hemen dispatch()olabilir çalıştırmak veya daha çalıştırabilir) daha öngörülebilir bir davranışa sahip olarak yarar sağlar.

Sadece post() numaralı bağlantıyı bulduktan sonra bir nesneyi silmeyi şimdiki io_service olay/işleyici/işlem bittikten sonra bulabilirsiniz.

İlgili konular