LINUX.ORG.RU

Где посмотреть код примера программы с Shared Memory и Atomics?

 


0

2

Чтобы понять, как ими пользоваться.

[Shared Array Buffers allow] Emscripten applications to share the main memory heap between web workers. This along with primitives for low level atomics and futex support enables Emscripten to implement support for the Pthreads (POSIX threads) API.

Идём в about:config,
переключаем javascript.options.shared_memory из false в true

на этом мысли завершаются, нужны новые.

Вопросов у меня два:
1) Emscripten у меня работал и до включения этой опции, как он это делал?
2) futex support - что это и как оно.

★★☆

Последнее исправление: Einstok_Fair (всего исправлений: 4)

Futex.

2) futex support - что это и как оно.

https://github.com/torvalds/linux/blob/master/kernel/futex.c реализация в ядре.

Futexes are tricky от Ульриха Дреппера (pdf!) https://www.akkadia.org/drepper/futex.pdf

Ну и man 2 futex само собой. Ближе к концу, там пример есть.

Если коротко, то оно быстро, юзерспейсно, но вообще-то это не POSIX. Наоборот, в Linux ряд средств POSIX реализованы через фьютексы. Например, как сказано в man:

Several higher-level programming abstractions are implemented via futexes, including POSIX semaphores and various POSIX threads synchronization mechanisms (mutexes, condition variables, read-write locks, and barriers).

Например, реализация мьютекса в NTPL именно через фьютексы и сделана. https://github.com/lattera/glibc/blob/master/nptl/pthread_mutex_lock.c

Вот так вот. Прикладнику, даже сишнику, оно разве что для общего развития надо знать. Ну либо для случая, когда по каким-то причинам хочется свелосипедить свои свои аналоги существующих механизмов. Т.е., например, мы не хотим или не можем почему-то NTPL использовать из glibc, дай-ка свои сгородим.

Как-то вот так.

Moisha_Liberman ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.