Параллельное программирование
Потоки vs процессы.
Процесс.
Процесс (process) - это объект, который создается операционной системой, при запуске приложения. Процессу выделяется отдельное адресное пространство, причем это пространство физически недоступно для других процессов. При запуске приложения порождается минимум 1 поток, он называется главным. Главный поток может порождать другие потоки. При завершении главного потока - дочерние потоки так же завершаются. У каждого процесса есть приоритет, чтобы могла ОС регулировать выделение процессорного времени. При необходимости организации взаимодействия между процессами (или потоками, принадлежащими разным процессам), используется IPC. Механимы IPC (inter-process communication) включается в себя:
- Файлы
- Сигналы
- Сокет
- Канал (pipe)
- Семафор
- Разделяемая память
- MMAP (файлы замавленные в память)
- Очереди сообщений
Поток.
Все потоки, созданные процессом, выполняются в адресном пространстве этого процесса и имеют доступ к ресурсам процесса. Поток разных процессов не имеет никакого доступа к ресурсам друг друга, так как они работают в разных адресных пространствах.
- Каждый поток имеет свой стек выполнения.
- При передачи данных между потоками одного процесса используется общая память.
CAS работает с переменными размером с машинное слово. В современных архитектурах запись в переменную с размером машинное слово всегда атомарно.
Как работает Thread.yield() в джава?
Futex