Описание тега test-and-set

3 ответа

Изменение порядка.Net CompareExchange

Может ли компилятор или процессор переупорядочить следующие инструкции, чтобы другой поток видел a == 0 а также b == 1? Если предположить, int a = 0, b = 0; где-то. System.Threading.Interlocked.CompareExchange<int>(ref a, 1, 0); System.Threadi…
0 ответов

Реализация Mutex без аппаратной поддержки Test-and-Set и CAS-операций

Давайте получим следующее простое определение мьютекса: class Mutex { private: bool lock; public: void acquire(); void release(); Mutex() { lock = 0; } }; И следующее acquire() Реализация функции (с использованием операций сравнения и обмена): void …
22 окт '18 в 04:37
1 ответ

CMPXCHG и критическая секция реализации

Оператор CMPXCHG работает следующим образом: CMPXCHG (common, old, new): int temp temp <- common if common = old then common <- new return temp Какой самый простой из возможных алгоритмов для реализации критической секции, если доступна атомар…
9 ответов

Для чего используется Test-and-Set?

После прочтения статьи Википедии " Тест и набор" у меня все еще остается вопрос: "Для чего будет использоваться тест и набор?" Я понимаю, что вы можете использовать его для реализации Mutex (как описано в википедии), но какие еще варианты он имеет?
23 сен '08 в 13:22
2 ответа

Реализация блокировки с использованием теста и набора

Ниже приведен код, приведенный в книге OSTEP, касающейся реализации блокировки с использованием инструкций test и set. Мой вопрос заключается в том, что в такой реализации поток, не удерживающий блокировку, не может вызвать функцию разблокировки и с…
25 июл '18 в 14:55
1 ответ

Атомарные операции над списком

Предположим, у меня есть список, и я хочу использовать test_and_set операция, параметром которой является вычисление некоторого адреса указателя l->a.next->next, Это, я думаю, не будет атомным, и test_and_set будет бесполезным. Есть ли способ …
28 фев '13 в 19:53
0 ответов

Почему TSL не может предложить безопасные атомарные операции для нескольких потоков

Почему использование системного вызова TSL в атомной операционной системе не дает нам многопоточного решения для более чем двух одновременных потоков \ процессов? Отредактировано: я извиняюсь за ошибку, я имел в виду TSL, а не тест-и-набор. Ссылка н…
3 ответа

PHP flock() для чтения-изменения-записи не работает

У меня есть файл журнала, поддерживаемый сценарием PHP. Скрипт PHP подвергается параллельной обработке. Я не могу получить flock() механизм работы с лог-файлом: в моем случае flock() не предотвращает одновременный доступ к файлу журнала, совместно и…
03 июл '18 в 13:27
2 ответа

Смешивание синхронизации без блокировки и с полной блокировкой потока с атомарным TestAndSet в C++

У меня есть потребительский поток, который должен читать из буфера без блокировки. Хорошо, если операция должна быть пропущена, потому что поток производителя записывает в буфер. Таким образом, мне кажется, что наиболее подходящим выбором является а…
4 ответа

Как использовать TestAndSet() для решения проблемы критической секции?

Я готовлюсь к экзамену и испытываю трудности с концепцией. Это псевдокод, который мне дают: int mutex = 0; do { while (TestAndSet(&mutex)); // critical section mutiex = 0; // remainder section } while (TRUE); Мой инструктор говорит, что с этим к…
1 ответ

История операторов ++/- по сравнению с инструкцией / операцией test-and-set

Я беру CS420 - Операционные системы. Мой профессор упомянул кое-что в классе на днях, что вызвало мой интерес, и я изучал это и приблизился, но не могу найти ответ. Он упомянул, что в прошлом он и другой профессор задавались вопросом, было ли изнача…
01 окт '15 в 04:39
1 ответ

Атомный тест и набор gcc - это то же самое, что и атомарная операция извлечения и сохранения?

В описании блокировки MCS я наткнулся на атомарную инструкцию "получить и сохранить". Из того, что я понял, это атомарно записывает значение в ячейку памяти и возвращает первоначальное значение этой ячейки памяти, это правильно? И это атомная встрое…
04 апр '11 в 02:52
3 ответа

Заблокируйте свободный класс атомарного состояния - это правильно?

Я просто ищу обратную связь (очевидные недостатки / способы ее улучшения) о моей попытке реализовать атомарное чтение / запись в структуре. Там будет один поток записи и несколько потоков чтения. Цель состоит в том, чтобы не дать читателю получить н…
18 апр '12 в 13:55
5 ответов

Атомная Инструкция

Что вы подразумеваете под атомными инструкциями? Как следующее становится Атомным? TestAndSet int TestAndSet(int *x){ register int temp = *x; *x = 1; return temp; } С точки зрения программного обеспечения, если кто-то не хочет использовать неблокиру…
1 ответ

Почему CompareAndSwap является более мощной инструкцией, чем TestAndSet?

Пожалуйста, рассмотрите следующий фрагмент кода для CompareAndSwap и дайте мне знать, почему эта атомарная инструкция является более мощной, чем атомарный TestAndSet для того, чтобы быть примитивом взаимного исключения? char CompareAndSwap(int *ptr,…
2 ответа

Как бы один код тестировал и устанавливал поведение без специальной аппаратной инструкции?

Большинство реализаций, которые я нахожу, требуют для этого аппаратных инструкций. Однако я сильно сомневаюсь, что это необходимо (если это так, я не могу понять, почему...)
20 сен '08 в 05:06
6 ответов

Как обработать каждый элемент в упорядоченном списке с дубликатами только один раз в Python?

У меня есть упорядоченный список объектов для обработки, который включает несколько дубликатов, и я хочу обработать только первое вхождение. В настоящее время я делаю это так в Python v2.7: seen = set() for (value, fmt) in formats: if fmt not in see…
0 ответов

Как проанализировать алгоритм взаимного исключения с помощью двух атомарных вызовов test-and-set

Кто-то разместил на этом сайте простой алгоритм взаимного исключения для двух потоков. bool locks[2]; thread_function() { bool id = get_id(); while(1) { if (!tset(&locks[id])) { if (!tset(&locks[!id])) { x++; // critical section break; } els…
3 ответа

Модель памяти.NET, переменные и тестируемые переменные: что гарантировано?

Я знаю, что модель памяти.NET (в.NET Framework; не компактная /micro/silverlight/mono/xna/what-have-you) гарантировала, что для определенных типов (особенно примитивных целых и ссылок) операции гарантированно будут атомное. Кроме того, я считаю, что…
1 ответ

Нужна помощь в понимании реализации мьютекса с test_and_set

Книга "Принципы операционной системы" Silberschatz, Galvin и Gagne имеет следующую реализацию для атомарных операций test_and_set boolean test_and_set(boolean *target) { boolean rv = *target; *target = true; return rv; } Они объявили глобальную пере…