vault backup: 2026-04-22 17:43:25
This commit is contained in:
67
mindmaps/Книга 'Библия C-шарп' 12 глава.canvas
Normal file
67
mindmaps/Книга 'Библия C-шарп' 12 глава.canvas
Normal file
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"6258470f4949a080","type":"text","text":"Многопоточность![[Pasted image 20260114112250.png]]","x":-260,"y":-200,"width":660,"height":380,"color":"4"},
|
||||
{"id":"6ccaea3735da0bd3","type":"text","text":"Основы","x":-460,"y":-41,"width":117,"height":62,"color":"1"},
|
||||
{"id":"b4d6842f6fc52332","type":"text","text":"**Поток** — это путь выполнения кода","x":-760,"y":-51,"width":200,"height":82},
|
||||
{"id":"46522dd855aee84b","type":"text","text":"Главный поток `Main()`","x":-1060,"y":-232,"width":273,"height":64},
|
||||
{"id":"8f54d3b1dc116b3e","type":"text","text":"Вторичный поток","x":-1185,"y":-10,"width":250,"height":60},
|
||||
{"id":"aa9ddbf0450d791b","type":"text","text":"Суть","x":-520,"y":80,"width":89,"height":50},
|
||||
{"id":"15980de9cff620a8","type":"text","text":"Технология, позволяющая выполнять несколько процессов или путей кода одновременно (единовременно).","x":-1020,"y":80,"width":395,"height":114},
|
||||
{"id":"696083fd57171c4c","type":"text","text":"Причины использования","x":-68,"y":260,"width":276,"height":63,"color":"1"},
|
||||
{"id":"867b3b35a8c59d75","type":"text","text":"Если вызвать длительную функцию (например, чтение данных из сети) в основном потоке, выполнение программы остановится до завершения этой функции.","x":-605,"y":440,"width":408,"height":175},
|
||||
{"id":"9eef8698f2f625ca","type":"text","text":"Отзывчивость интерфейса (UX)","x":-95,"y":374,"width":330,"height":66},
|
||||
{"id":"e500476e027cc0d2","type":"text","text":"Вынос тяжелых задач (сеть, сложные вычисления) во вторичные потоки позволяет основному потоку всегда оставаться свободным для взаимодействия с пользователем.","x":-165,"y":480,"width":471,"height":187},
|
||||
{"id":"a9f7ba58d497a048","type":"text","text":"Синхронное ожидание![[Pasted image 20260115053650.png]]","x":-431,"y":233,"width":295,"height":180},
|
||||
{"id":"a8251d2a41f2b441","type":"text","text":"Ожидание внешних событий![[Pasted image 20260115053730.png]]","x":340,"y":228,"width":500,"height":292},
|
||||
{"id":"5505e323e62ab27c","x":-660,"y":-380,"width":281,"height":50,"type":"text","text":"Приостановка `Sleep()`"},
|
||||
{"id":"f8a77d708c80cc47","x":-681,"y":-480,"width":300,"height":57,"type":"text","text":"Завершение автоматически"},
|
||||
{"id":"52f84d7cbaf95536","x":-619,"y":-288,"width":200,"height":50,"type":"text","text":"Запуск `Start()`"},
|
||||
{"id":"d3f42bb28e9feddd","x":-304,"y":-288,"width":278,"height":56,"color":"6","type":"text","text":"`using System.Threading`"},
|
||||
{"id":"0113f4493a58b147","x":-228,"y":-380,"width":126,"height":50,"color":"1","type":"text","text":"`Thread`"},
|
||||
{"id":"2671739f72233c1a","x":-357,"y":-776,"width":384,"height":296,"type":"text","text":"Приоритеты\n\n| Highest | Наивысший |\n| ----------- | ---------------- |\n| AboveNormal | Выше нормального |\n| Normal | Нормальный |\n| BelowNormal | Ниже нормального |\n| Lowest | Низший |\n"},
|
||||
{"id":"a0d28350ff78c806","x":92,"y":-640,"width":308,"height":104,"type":"text","text":"**Foreground:** Приложение не закроется, пока работают такие потоки."},
|
||||
{"id":"9577582cbbd5011f","x":93,"y":-497,"width":307,"height":92,"type":"text","text":"**IsBackground:** Свойство, определяющее тип потока"},
|
||||
{"id":"cbd96f37d745e8cd","x":93,"y":-380,"width":307,"height":142,"type":"text","text":"**Background:** Завершаются автоматически при закрытии основного потока приложения"},
|
||||
{"id":"57e32e25c6012900","x":495,"y":-309,"width":190,"height":66,"color":"1","type":"text","text":"Синхронизация потоков"},
|
||||
{"id":"122133d297c625a6","x":672,"y":-562,"width":348,"height":111,"type":"text","text":"Несколько потоков одновременно пытаются изменить одни и те же данные."},
|
||||
{"id":"b2e7c66362d2fc72","x":486,"y":63,"width":234,"height":50,"color":"1","type":"text","text":"Задачи и async/await"},
|
||||
{"id":"df6b7033bbe25e22","x":506,"y":-180,"width":428,"height":140,"type":"text","text":"Task(Задача) — Более высокая абстракция над потоками. Задача — это единица работы, которую нужно выполнить."},
|
||||
{"id":"26f55ba1175bc3c2","x":823,"y":-375,"width":348,"height":174,"type":"text","text":"Создается «критическая секция». Пока один поток выполняет код внутри блока `lock`, остальные потоки ждут своей очереди."},
|
||||
{"id":"7b9925ae497beca0","x":1108,"y":-110,"width":125,"height":60,"type":"text","text":"`async`"},
|
||||
{"id":"e5ffb4095152645a","x":983,"y":150,"width":125,"height":60,"type":"text","text":"`await`"},
|
||||
{"id":"ec3f0b7232c43cc7","x":880,"y":266,"width":404,"height":147,"type":"text","text":"Позволяет потоку не «висеть» в ожидании (например, пока скачивается файл), а освободиться для других дел"}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"c7b769f85c144c7b","fromNode":"6258470f4949a080","fromSide":"left","toNode":"6ccaea3735da0bd3","toSide":"right","color":"1"},
|
||||
{"id":"f3032b5da3f263bb","fromNode":"6ccaea3735da0bd3","fromSide":"left","toNode":"b4d6842f6fc52332","toSide":"right"},
|
||||
{"id":"395d4a07a9f49269","fromNode":"b4d6842f6fc52332","fromSide":"top","toNode":"46522dd855aee84b","toSide":"right"},
|
||||
{"id":"614d33345bc4c671","fromNode":"46522dd855aee84b","fromSide":"bottom","toNode":"8f54d3b1dc116b3e","toSide":"top","label":"выполняется параллельно"},
|
||||
{"id":"d85855662fe8d996","fromNode":"8f54d3b1dc116b3e","fromSide":"right","toNode":"46522dd855aee84b","toSide":"bottom","label":"точка входа"},
|
||||
{"id":"5d4a3d44fecefc9f","fromNode":"6ccaea3735da0bd3","fromSide":"bottom","toNode":"aa9ddbf0450d791b","toSide":"top"},
|
||||
{"id":"85900e487e53f679","fromNode":"aa9ddbf0450d791b","fromSide":"bottom","toNode":"15980de9cff620a8","toSide":"right"},
|
||||
{"id":"a08a8e0940da671d","fromNode":"6258470f4949a080","fromSide":"bottom","toNode":"696083fd57171c4c","toSide":"top","color":"1"},
|
||||
{"id":"e777dc328e763a23","fromNode":"696083fd57171c4c","fromSide":"left","toNode":"a9f7ba58d497a048","toSide":"right"},
|
||||
{"id":"dcb38f6106501b83","fromNode":"a9f7ba58d497a048","fromSide":"bottom","toNode":"867b3b35a8c59d75","toSide":"top"},
|
||||
{"id":"bd66106705916d05","fromNode":"696083fd57171c4c","fromSide":"bottom","toNode":"9eef8698f2f625ca","toSide":"top"},
|
||||
{"id":"e28599ebb5bab6d4","fromNode":"9eef8698f2f625ca","fromSide":"bottom","toNode":"e500476e027cc0d2","toSide":"top"},
|
||||
{"id":"8205c9fda44d6151","fromNode":"696083fd57171c4c","fromSide":"right","toNode":"a8251d2a41f2b441","toSide":"left"},
|
||||
{"id":"0abf88ea2da651d8","fromNode":"6258470f4949a080","fromSide":"top","toNode":"0113f4493a58b147","toSide":"right","color":"1"},
|
||||
{"id":"7cb79cfbf398f51d","fromNode":"0113f4493a58b147","fromSide":"bottom","toNode":"d3f42bb28e9feddd","toSide":"top","color":"6"},
|
||||
{"id":"7c112c179cfb5184","fromNode":"0113f4493a58b147","fromSide":"left","toNode":"52f84d7cbaf95536","toSide":"right"},
|
||||
{"id":"f6e7f459c77af99d","fromNode":"0113f4493a58b147","fromSide":"left","toNode":"5505e323e62ab27c","toSide":"right"},
|
||||
{"id":"da485d82ed578f85","fromNode":"0113f4493a58b147","fromSide":"left","toNode":"f8a77d708c80cc47","toSide":"right"},
|
||||
{"id":"1ee8eb6582379a3a","fromNode":"0113f4493a58b147","fromSide":"top","toNode":"2671739f72233c1a","toSide":"bottom"},
|
||||
{"id":"b42b8fa72c6eb3cc","fromNode":"0113f4493a58b147","fromSide":"top","toNode":"9577582cbbd5011f","toSide":"left"},
|
||||
{"id":"81d7b70042362b36","fromNode":"9577582cbbd5011f","fromSide":"top","toNode":"a0d28350ff78c806","toSide":"bottom"},
|
||||
{"id":"45b0c4446e4c4ff0","fromNode":"9577582cbbd5011f","fromSide":"bottom","toNode":"cbd96f37d745e8cd","toSide":"top"},
|
||||
{"id":"c84ef67f084ddd8f","fromNode":"6258470f4949a080","fromSide":"right","toNode":"57e32e25c6012900","toSide":"left","color":"1"},
|
||||
{"id":"e5cf53c22a815c82","fromNode":"57e32e25c6012900","fromSide":"right","toNode":"122133d297c625a6","toSide":"left","label":"Проблема"},
|
||||
{"id":"11ac9c2fe02c7fb2","fromNode":"122133d297c625a6","fromSide":"bottom","toNode":"26f55ba1175bc3c2","toSide":"top","label":"Решение"},
|
||||
{"id":"fb57e1e4313c15a1","fromNode":"6258470f4949a080","fromSide":"right","toNode":"b2e7c66362d2fc72","toSide":"left","color":"1"},
|
||||
{"id":"c66701d934702122","fromNode":"b2e7c66362d2fc72","fromSide":"top","toNode":"df6b7033bbe25e22","toSide":"bottom"},
|
||||
{"id":"ea93fddb762e8814","fromNode":"b2e7c66362d2fc72","fromSide":"right","toNode":"7b9925ae497beca0","toSide":"left"},
|
||||
{"id":"de78914f33f88baf","fromNode":"b2e7c66362d2fc72","fromSide":"right","toNode":"e5ffb4095152645a","toSide":"left"},
|
||||
{"id":"fce885d75dd39b64","fromNode":"e5ffb4095152645a","fromSide":"bottom","toNode":"ec3f0b7232c43cc7","toSide":"top"},
|
||||
{"id":"eae976012b55c3f9","fromNode":"7b9925ae497beca0","fromSide":"bottom","toNode":"e5ffb4095152645a","toSide":"top","label":"позволяет методу использовать внутри себя"}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user