Параллельное программирование

Потоки vs процессы.

Процесс.

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

  • Файлы
  • Сигналы
  • Сокет
  • Канал (pipe)
  • Семафор
  • Разделяемая память
  • MMAP (файлы замавленные в память)
  • Очереди сообщений

Поток.

Все потоки, созданные процессом, выполняются в адресном пространстве этого процесса и имеют доступ к ресурсам процесса. Поток разных процессов не имеет никакого доступа к ресурсам друг друга, так как они работают в разных адресных пространствах.

  • Каждый поток имеет свой стек выполнения.
  • При передачи данных между потоками одного процесса используется общая память.

CAS работает с переменными размером с машинное слово. В современных архитектурах запись в переменную с размером машинное слово всегда атомарно.

Как работает Thread.yield() в джава?

Futex

Written on March 12, 2020