Bir kanala yazacak birden fazla ileti dizisine sahip olmak istediğim bir Netty uygulamasına sahibim. Sadece Channel.write iş parçacığı güvenli olup olmadığını merak ediyordum?Netty Channel.write iş parçacığı güvenli mi?
cevap
Bu iş parçacığı güvenlidir, bu nedenle endişelenmeniz gerekmez.
Hayır, iş parçacığının güvensiz olması nedeniyle, Channel.write
, boru hattının HeadContext'inde ChannelOutboundBuffer.addMessage
ve ChannelOutboundBuffer.addMessage
kesinlikle iş parçacığı için güvenli değildir. kod görebileceğiniz gibi
public void addMessage(Object msg, int size, ChannelPromise promise) {
Entry entry = Entry.newInstance(msg, size, total(msg), promise);
if (tailEntry == null) {
flushedEntry = null;
tailEntry = entry;
} else {
Entry tail = tailEntry;
tail.next = entry;
tailEntry = entry;
}
if (unflushedEntry == null) {
unflushedEntry = entry;
}
// increment pending bytes after adding message to the unflushed arrays.
// See https://github.com/netty/netty/issues/1619
incrementPendingOutboundBytes(size, false);
}
böylece herhangi bir zamanda Channel.write çağıran en fazla bir iş parçacığına sahip olmalısınız. Kodun biçimi ile ilgili bir sorun var, http://netty.io/4.0/xref/index.html – yuguoliang
adresinden bu talebinizi doğrulayamıyorum. Bu kanal için olay döngüsünü aldıktan sonra 'AbstractUnsafe.write' olarak adlandırılan' AbstractChannel.write' '' Pipeline.write''ı çağırdığını görüyorum. Bu yöntemin içinde, iş parçacığı olay döngüsünün içinde olduğunu iddia eder, böylece yalnızca bir kerede yalnızca 1 iş parçacığıyla çağrılabilir – Ferrybig
, ChannelOutboundBuffer.addMessage()
yöntem kendisi parçacığı güvenli değil: Bu kod bir bakın. Bununla birlikte, yazma kanalı "iş parçacığı güvenli" dir, çünkü netty tek G/Ç iş parçasındaki yazma görevini/yöntemini çalıştırır.
- 1. RNGCryptoServiceProvider.GetBytes iş parçacığı güvenli mi?
- 2. java.lang.reflect.Method iş parçacığı güvenli mi?
- 3. ACAccount iş parçacığı güvenli mi?
- 4. HttpContext.Current.Cache iş parçacığı güvenli mi?
- 5. Boto kitaplığı iş parçacığı güvenli mi?
- 6. Linux'ta gettimeofday işlevi iş parçacığı güvenli mi?
- 7. Django Rest Framework iş parçacığı güvenli mi?
- 8. WCF ClientBase iş parçacığı güvenli mi?
- 9. JMS QueueSender iş parçacığı güvenli mi?
- 10. Bu html yardımcı iş parçacığı güvenli mi?
- 11. Python'un günlüğü modülü iş parçacığı güvenli mi?
- 12. Log4j iş parçacığı güvenli değil mi?
- 13. Delphi TADOConnection iş parçacığı güvenli mi?
- 14. İş parçacığı güvenli Queue
- 15. Java iş parçacığı güvenli kilitleme
- 16. Epoll iş parçacığı güvenli midir?
- 17. İş parçacığı güvenli hale getirme
- 18. İş parçacığı güvenli ByteArrayOutputStream nedir?
- 19. java.text.SimpleDateFormat iş parçacığı güvenli değil
- 20. DatagramSocket.send iş parçacığı güvenli midir?
- 21. System.ServiceModel.Channels.BufferManager iş parçacığı güvenli midir?
- 22. ClassLoader iş parçacığı güvenli midir?
- 23. putStrLn iş parçacığı güvenli midir?
- 24. CertificateFactory.getInstance ("x.509") güvenli iş parçacığı mı?
- 25. WPF'de UI dispatcher.begininvoke yöntemi iş parçacığı güvenli mi?
- 26. Bu Java şifreleme kodu iş parçacığı güvenli mi?
- 27. java Jersey 2.1 istemci iş parçacığı güvenli mi?
- 28. Java MessageFormat Sınıfı iş parçacığı güvenli mi? (SimpleDateFormat'ın aksine)
- 29. guava-kütüphaneleri - Sıralama sınıfı iş parçacığı güvenli mi?
- 30. WCF'nin DataContractSerilaizer parçacığı güvenli mi?
http://stackoverflow.com/a/10702210/828625 –
Bilmiyorum, yanılıyor olabilirim. Ancak bu http://lists.jboss.org/pipermail/netty-users/2008-November/000045.html, alıntı yaptığınız konudaki sözleriyle çelişiyor. –
Yine, bağladığınız şey aynı şeyi söylüyor ve sorunuzu cevaplıyor. Channel.write iş parçacığı güvenlidir. –