|
Вопрос по событиям
|
|||
---|---|---|---|
#18+
hVostt, ну х.з., как то, лет 10 назад, мой друг накропал код выстреливать обработчик события в отдельный поток каждому подписчику - он очень удивился высокой производительности (а я нет - всегда верил мокрософтам) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2017, 22:51 |
|
Вопрос по событиям
|
|||
---|---|---|---|
#18+
LR, угу, для этого надо раскалупать цепочку делегатов. с асинками ещё интереснее. всё решаемо, но надо отдать должное, для своего времени было норм, сейчас проще использовать что-то своё. хотя бы, чтобы не писать всякие расширения, типа SafeEventInvoker, SafeEventInvokerAsync... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 08:21 |
|
Вопрос по событиям
|
|||
---|---|---|---|
#18+
hVosttЕвгенийВА если соорудить простенький код с событием и попробовать дизассемблировать его, только не убогими поделками от телерика и джетбрайнса? Убогие? Что же тогда называть богом данные поделки? Таки что ты хочешь сказать? На самом деле компилятор сварганит нечто подобное. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87.
Для многопоточной среды самый то. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 11:14 |
|
Вопрос по событиям
|
|||
---|---|---|---|
#18+
ЕвгенийВ, А наезды на JetBrains и Telerik были к чему? ЕвгенийВНа самом деле компилятор сварганит нечто подобное. Не вижу у тебя вызова события. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
IL: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135.
Как видим, если использовать вызов через ?., то CompareExchange не нужен, и оптимизация компилятора ничего не уберёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 11:57 |
|
Вопрос по событиям
|
|||
---|---|---|---|
#18+
Кстати, IL получен через dotPeek ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 11:58 |
|
Вопрос по событиям
|
|||
---|---|---|---|
#18+
hVostt, Таки с потокобезопасностью то все нормально, насколько это возможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 17:26 |
|
Вопрос по событиям
|
|||
---|---|---|---|
#18+
ЕвгенийВhVostt, Таки с потокобезопасностью то все нормально, насколько это возможно? Учитывая, что event это всего лишь абстракция, могли бы реализовать потокобезопасный Invoke. Странно, что этого не сделали. Ещё не нравится реализация цепочек делегатов. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 20:21 |
|
Вопрос по событиям
|
|||
---|---|---|---|
#18+
hVostt, Цепочка делегатов есть неизменяемая субстанция, самый то для многопоточности! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 22:50 |
|
Вопрос по событиям
|
|||
---|---|---|---|
#18+
ЕвгенийВhVostt, Цепочка делегатов есть неизменяемая субстанция, самый то для многопоточности! Да ни для чего это не самое то, кроме как для событий. В большинстве случаев лишний и не очевидный оверхед. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 23:52 |
|
Вопрос по событиям
|
|||
---|---|---|---|
#18+
Надеялся что jit оптимизирует, но :( Код: c# 1. 2. 3.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2017, 11:30 |
|
|
start [/forum/topic.php?fid=20&msg=39400727&tid=1400056]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 264ms |
total: | 398ms |
0 / 0 |