|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBA, YUBAКак конкретно это реализовано MS не имеет значения. МС это реализовало так, что у них всего 1 экземпляр метода в памяти, что вы там выдумали из своего "знания" машинных кодов © я даже представить боюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 21:10 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
PallarisYUBAОбраз - описание, модель, копия и т.д., достаточное, для полного восстановления объекта и его свойств. Экземпляр метода - он всегда один в памяти.Понятия не имею, но каждый поток использует только и исключительно свои все переменные определенные в функции, что видно из распечатки вывода. И как MS это делает, копированием кода всех используемых функций, сохранением копии всех переменных в теле используемых потоком функций на время прерывания, либо переменные создаются в адресном пространстве потока, не ясно. Но нам нужен сам факт сего. Интересно еще и то, что функция не блокируется (как кто-то сказал), и может не конфликтуя выполняться одновременно несколькими потоками. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 22:06 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBA, Вы вообще представляете что такое функция? интересно было бы услышать )) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 22:15 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBAИнтересно еще и то, что функция не блокируется (как кто-то сказал). Самое интересное, что это ты и скзал, присовоив почему то мне ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 22:28 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBAДоступ к функции, как правило, и есть доступ к объектам и получение ссылки на объект это просто вызов кода ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 22:36 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
PallarisСамое интересное, что это ты и сказал, присвоив почему то мнеЯ не помню кто. :) Ну, пусть я. Без разницы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 22:44 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
Ну ладно, уже флуд пошел. Все уже ясно. Тема исчерпана. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 22:45 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBAЯ не помню кто. :) Ну, пусть я. Без разницы. тролль худосочный ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 22:58 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBA, А теперь проведите "натурный" эксперимент вот с таким кодом: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 08:04 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBA, а ещё лучше выполнить вот этот код... Код: 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.04.2014, 09:18 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBA, ну и уже совсем для вкусности... Код: 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.
и результат "вкусности" Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 10:05 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
Alex Kuznetsov, да, спасибо. Ну, от переменных класса ничего другого ожидать и не приходится. Эт понятно. Меня Рихтер сильно заморочил - вот этим: РихтерВ то же время FCL не гарантирует безопасности в отношении потоков экземплярным методам, так как введение в них запирающего кода слишком сильно сказывается на производительности. У него еще есть рассуждения на эту тему. Там ни слова о переменных класса. Передача в функцию по ссылке или значению здесь тоже ни с какого бока. Что он подразумевает под отсутствием "гарантии безопасности в отношении потоков" именно "экземплярным методам", так и не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 17:43 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBAЧто он подразумевает под отсутствием "гарантии безопасности в отношении потоков" именно "экземплярным методам", так и не понял. Ну это скорее товарищь Рихтер не понял, что нужно обьяснять, что подобная опасность касается только общих ресурсов, а не переменных в области видимости конкретной функции.... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 19:21 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
D129, с общими ресурсами я решил просто, без всяких "запираний-отпираний". Данные, порожденные потоками, имеют временную метку, и измениться уже не могут. Другие потоки обращаются только к последней временной метке или более ранним. Все асинхронно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 21:19 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBA, гыгы авторДанные, порожденные потоками, имеют временную метку, и измениться уже не могут. Другие потоки обращаются только к последней временной метке или более ранним. Все асинхронно. что только не придумают русские, лишь бы не строить дороги..)))))))) зы я надеюсь это не в production ( так риторически) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 21:33 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
Где-то в степиУзбагойтесь, вернитесь к истокам : организация памяти, коль затронули функции - почитайте про стек вызовов (call stack) (( В качестве ликбеза поясни пожалуйста: почему аргументы вызова пушатся в стек раньше точки возврата в функцию вызова (ведь они попнутся в итоге позже, чем точка возврата, а должно быть наоборот по идее), и в какой момент в стек пушатся локальные переменные, и когда и кем они попаются оттуда. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 21:41 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
Где-то в степиYUBA, гыгы что только не придумают русские, лишь бы не строить дороги..)))))))) зы я надеюсь это не в production ( так риторически) Послушайте, Гыгы, вы когда нибудь вообще что-либо читали, кроме программирования? Или только "делать умный вид и надувать щеки"(с) ? В этом подходе ничего нового, применяется с момента рождения цифровой обработки. Так, кстати, я вообще не программист, и программирование для меня не более, чем вспомогательный инструмент. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 22:06 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
Pallaris, аргуметны пишутся раньше перед вызовом call, просто перед ними идет переворот стека, не понял про локальные пишет хозяин кода, если это аргументы снаружи, там возможно укладка двух первых в регистр процессора минуя память ( обсуждали тут вроде) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 22:20 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBAТак, кстати, я вообще не программист, и программирование для меня не более, чем вспомогательный инструмент. А почему тогда возмущаетесь удивлением профессиональных программистов непрофессиональному решению? YUBAДругие потоки обращаются только к последней временной метке или более ранним Вы учитываете, что тут тоже скорее всего будут нужны "отпирания/запирания"? Вероятно, если вы приведете пример РЕАЛЬНОЙ задачи, которую решаете, а не какие-то синтетические варианты, вам помогут более конкретно ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 22:39 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBAAlex Kuznetsov, да, спасибо. Ну, от переменных класса ничего другого ожидать и не приходится. Эт понятно. Меня Рихтер сильно заморочил - вот этим: РихтерВ то же время FCL не гарантирует безопасности в отношении потоков экземплярным методам, так как введение в них запирающего кода слишком сильно сказывается на производительности. У него еще есть рассуждения на эту тему. Там ни слова о переменных класса. Передача в функцию по ссылке или значению здесь тоже ни с какого бока. Что он подразумевает под отсутствием "гарантии безопасности в отношении потоков" именно "экземплярным методам", так и не понял.Я считаю, что мой пример показывает именно то, что Рихтер и имел в виду. Методы экземпляра могут как работать с переменными класса, "внешними" по отношению к ним(методам), так и не работать с ними. Отсюда и нет гарантии безопасности без использования блокировок. Использование-же блокировок замедляет работу методов в силу вынужденного простоя во время ожидания снятия блокировки. По моему всё достаточно логично и понятно. Я считаю, что лучше в данном случае прибегнуть к Бритве Оккама и по возможности отказаться от использования разделяемых ресурсов, т.е. "внешних" по отношению к методу экземпляра переменных, при работе в многопоточной среде, дабы не замедлять работу блокировками. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 22:43 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
Где-то в степи просто перед ними идет переворот стека, O.O это что за чудо-операция такая? не понял про локальные Ну пишут в Вики, что стек может использоваться для хранения локальных переменных - только не пишут как и зачем (разве что при рекурсии?) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 22:50 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
Pallaris, аргументы идут раньше вызова, после вызова происходит проброс результата в локальную переменную, ну может быть тут действительно не уместно переворот (stloc.0), вот про рекурсию не скажу, как бы логично разматывать стек без видимых локальных переменных но проброс всеравно скорее будет чисто техническии ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 23:30 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
YUBA, да не прибедняйтесь, я то же уже пол года, и не собираюсь пока , скучно и не интересно. лучше бездельничать и лазить по спортзалам )) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 23:49 |
|
Многопоточность и разделяемые ресурсы.
|
|||
---|---|---|---|
#18+
Arm79YUBAДругие потоки обращаются только к последней временной метке или более ранним Вы учитываете, что тут тоже скорее всего будут нужны "отпирания/запирания"? Для чего? Все данные записываются в строки таблиц DataTable c ключевым полем [DateTime]. Выборка по View.RowFilter="DateTime <= '" + T + "'". Данные в строке больше не меняются. При готовности новых данных пишутся новые строки в таблицы с другим Т. Производящий поток сам решает какое время Т(n+1) >T(n) ему указать. А др потоки, какое время выбрать из <=Tn для обработки. Если нужных данных >T нет, ждем. Arm79Вероятно, если вы приведете пример РЕАЛЬНОЙ задачи, которую решаете, а не какие-то синтетические варианты, вам помогут более конкретноСпасибо, вопросов пока нет. Разве по методу Update, но это др. тема, и пока не к спеху. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 23:50 |
|
|
start [/forum/topic.php?fid=20&msg=38607885&tid=1403051]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 350ms |
total: | 637ms |
0 / 0 |