3 / 3 / 0
Регистрация: 22.07.2014
Сообщений: 209
|
|
1 | |
Синхронизация потоков без объектов ядра - возможно ли?26.06.2015, 16:04. Показов 1767. Ответов 1
Метки нет (Все метки)
Нужно решить такую задачу: синхронизировать два потока барьером, с помощью asm вставок в код в более высокоуровневом языке, тоесть будет два потока инструкций которые доходя до asm будут с помощью него опрашивать друг друга на состояние флагов, waitforsingleobject использовать запрещено условием. Я не понимаю как доступны друг другу регистры в параллельных потоках, если у кого то есть литература поделитесь пожалуйста.
0
|
26.06.2015, 16:04 | |
Ответы с готовыми решениями:
1
Синхронизация на базе объектов ядра Синхронизация потоков без использования mutex Синхронизация потоков на элементарном уровне (переключение потоков) Синхронизация потоков: проблема гонки потоков |
Ушел с форума
|
|
27.06.2015, 09:15 | 2 |
Можно написать что-то типа спин-блокировки на инструкциях cmpxchg.
Гуглите "CAS", "compare and set", "compare and swap" и т.п. Принцип работы: поток, который захватывает блокировку, в цикле выполняет операцию compare-and-swap, пока она не будет выполнена успешно. С этого момента блокировка считается захваченной. Освобождение блокировки проще, нужно лишь вернуть в переменную исходное значение (лучше с помощью одной из специальных инструкций, например xchg, а не mov). Это, конечно, не настоящий спин-лок (в настоящих используются "смягчающие" чтения, инструкции pause, специальные алгоритмы планирования и т.д.), но он полностью корректный и работать будет. А почитать советую Intel и AMD Developers Manuals, они есть на официальных сайтах Intel и AMD в свободном доступе. Ну и вот, для общего развития: Test-And-Test-And-Set Lock https://askldjd.wordpress.com/... -set-lock/ TTAS Spinlock with Yield https://askldjd.wordpress.com/... ith-yield/
1
|
27.06.2015, 09:15 | |
27.06.2015, 09:15 | |
Помогаю со студенческими работами здесь
2
Ожидание завершения потоков ядра Синхронизация потоков Синхронизация потоков Синхронизация потоков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |