|
|
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
Понятно, что Concurrency Vs multithreading это где-то рядом, но может всё таки есть какие-то отличия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 11:37 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
Если в двух словах, multithreading - это выполнение задачи в нескольких потоках в целом, это скорее как парадигма. Concurrency не может существовать без multithreading - и в нем рассматриваются вопросы по взаимодействию потоков в том числе гарантии видимости, целостности, корректности. Concurrency - это когда есть работа в нескольких потоках с одними и теми же данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 12:25 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
Как по мне оба этих термина про одно и тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 12:25 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
забыл ник, то есть когда я пишу thread.start() я думаю в основном о multithreading, а когда о wait/notify, то о concurrency ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 13:31 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
redwhite90забыл ник, то есть когда я пишу thread.start() я думаю в основном о multithreading, а когда о wait/notify, то о concurrency ? не совсем, multithreading он же возможен и на одном ядре. Это способ разбить задачу на юниты, которые могут, но не обязаны выполняться параллельно. Concurrency же рассматривает как раз вопросы параллельного выполнения, и возникающие в связи с этим сложности, видимость, целостность, и тд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 13:50 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
забыл ник, redwhite90то есть когда я пишу thread.start() я думаю в основном о multithreading забыл никmultithreading он же возможен и на одном ядре. Это способ разбить задачу на юниты, которые могут, но не обязаны выполняться параллельно. а где противоречие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 14:35 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
Мыши против сыра. Рок против наркотиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 15:28 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
забыл никне совсем, multithreading он же возможен и на одном ядре. Это способ разбить задачу на юниты, которые могут, но не обязаны выполняться параллельно. Concurrency же рассматривает как раз вопросы параллельного выполнения, и возникающие в связи с этим сложности, видимость, целостность, и тдНу видимость не гарантирована и на одноядерном процессоре. Отличие одноядерного процессора от многоядерного заключается в том, что не надо парится о когерентности кэшей. Но все остальное остается на своих местах - кэширование в регистрах, out-of-order execution, и т.д.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2014, 20:03 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
DEVcoach, я из без таких выражений, как "когерентности кэшей" верю, что ты разбираешься в этой теме) но можно ж как-то почеловечнее выражаться) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 11:17 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
DEVcoachзабыл никне совсем, multithreading он же возможен и на одном ядре. Это способ разбить задачу на юниты, которые могут, но не обязаны выполняться параллельно. Concurrency же рассматривает как раз вопросы параллельного выполнения, и возникающие в связи с этим сложности, видимость, целостность, и тдНу видимость не гарантирована и на одноядерном процессоре. Отличие одноядерного процессора от многоядерного заключается в том, что не надо парится о когерентности кэшей. Но все остальное остается на своих местах - кэширование в регистрах, out-of-order execution, и т.д.. DEVcoach, А как Вы "паритесь с когерентностью кэшэй" и что такое кэширование в регистрах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 12:47 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
забыл никredwhite90забыл ник, то есть когда я пишу thread.start() я думаю в основном о multithreading, а когда о wait/notify, то о concurrency ? не совсем, multithreading он же возможен и на одном ядре. Это способ разбить задачу на юниты, которые могут, но не обязаны выполняться параллельно. Concurrency же рассматривает как раз вопросы параллельного выполнения, и возникающие в связи с этим сложности, видимость, целостность, и тд concurrency напрямую не зависит от количества ядер, а оно имеет место, когда 2+ потока обращаются к один и тем же данным (ресурсам). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 13:07 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
no56892DEVcoach, А как Вы "паритесь с когерентностью кэшэй"Так же, как и остальные - через acquire/release :-) no56892и что такое кэширование в регистрах?Оптимизации JITa. Сделайте следующее: Код: java 1. 2. 3. 4. 5. 6. 7. Через некоторое время (напр. через секунду) из другого потока: Код: java 1. 2. Thread 1 у вас не остановится. Потому что он уже не читает эту переменную ни из памяти, ни из кэша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 14:45 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
DEVcoachno56892DEVcoach, А как Вы "паритесь с когерентностью кэшэй"Так же, как и остальные - через acquire/release :-) no56892и что такое кэширование в регистрах?Оптимизации JITa. Сделайте следующее: Код: java 1. 2. 3. 4. 5. 6. 7. Через некоторое время (напр. через секунду) из другого потока: Код: java 1. 2. Thread 1 у вас не остановится. Потому что он уже не читает эту переменную ни из памяти, ни из кэша. Вы шутите что-ли? : ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 15:12 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
no56892Вы шутите что-ли? : )В чем именно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 15:31 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
no56892concurrency напрямую не зависит от количества ядер, а оно имеет место, когда 2+ потока обращаются к один и тем же данным (ресурсам). Молодец, сразу видно что прочитал первый ответ в этой теме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 15:35 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
DEVcoachno56892Вы шутите что-ли? : )В чем именно? Ну в том, что Ваш пример работает как и надо, т.е. полностью противоположно тому, что Вы написали. И, если есть, можно еще парочку примеров по управлению кэшем процессора из джавы. авторМолодец, сразу видно что прочитал первый ответ в этой теме Пропустил. Но, кстати в 4м Вашем же ответе все-таки уже не так однозначно как в первом, даже наоборот... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 15:55 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
no56892Ну в том, что Ваш пример работает как и надо, т.е. полностью противоположно тому, что Вы написали. И, если есть, можно еще парочку примеров по управлению кэшем процессора из джавы.Ну вы бы меньше упражнялись в умении язвить, а больше писали по сути :-) Кэшами из Java не управляют. Из Java управляют видимостью изменений, используя acquire/release семантику. А эта семантика, в свою очередь: 1) Накладывает ограничения на оптимизации JIT. 2) Порождает барьеры памяти, которые приводят к синхронизации кэшей по определнным правилам. Это и есть, как вы выразились "управление кэшами из Java". Ну а про пример кода, запустите вот это: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 16:05 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
В данном случае - "проделки JIT", если чуть изменить цикл, то всё работает: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 16:28 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВ данном случае - "проделки JIT оптимизатора" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 16:29 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov// disable loop unrolling transformation to while(true);Что-то плохо соображаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 16:33 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВ данном случае - "проделки JIT", если чуть изменить цикл, то всё работаетнемножко усложним код: Код: java 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. Из него мы видим, что цикл никуда не делся, так как control постоянно изменяется. Однако изменения мы не видим даже через Unsafe. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 16:37 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЧто-то плохо соображаю.Контрольное чтение через Unsafe в s0 показывает, что поток не видит изменения значения, независимо от того, что там с условием цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 16:41 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
Вот, что yield животворящий делает: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 16:48 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
Я бы сказал, что махинации с многопоточностью опасны не только из-за неопределённостью с процами, но и зависимостью от планировщиков операционных систем. Так что - ну их нах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 16:54 |
|
||
|
Concurrency Vs multithreading
|
|||
|---|---|---|---|
|
#18+
DEVcoachBasil A. SidorovЧто-то плохо соображаю.Контрольное чтение через Unsafe в s0 показывает, что поток не видит изменения значения, ... Та ну? Код: java 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. PS. А зачем делать бесконечные циклы без sleep(1)? У вас же загрука ЦП 100% тогда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2014, 17:03 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38615624&tid=2126936]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 381ms |

| 0 / 0 |
