Описание тега stm

Программная транзакционная память (STM) - это механизм синхронизации в параллельном программировании, который может выполнять группы операций с памятью атомарно. Использование транзакционной памяти (реализованной за счет оптимистической синхронизации) вместо блокировок устраняет риск тупиковой ситуации.
1 ответ

Насколько безопасен `unsafePerformIO (newTVarIO 0)`?

Я заметил эту идиому в Data.Unique: uniqSource :: TVar Integer uniqSource = unsafePerformIO (newTVarIO 0) {-# NOINLINE uniqSource #-} Гарантируется ли запуск только один раз?
25 дек '11 в 19:29
3 ответа

TMVar, но без буфера?

Я пытаюсь сделать общение между легкими нитями Haskell. Потоки хотят отправлять друг другу сообщения для общения и синхронизации. Я изначально использовал TMVar для этого, но я только что понял, что семантика неверна: TMVar будет хранить одно сообще…
13 июн '15 в 22:08
1 ответ

Конфликтующие архитектуры ЦП 1/13 при компиляции для Cortex M4

Раньше я компилировал код своего микроконтроллера с помощью arm-none-eabi-gcc/arm-none-eabi-g++, и все работало нормально. Я использую доморощенный бочонок gcc-arm-embedded на Mac. Вчера я обновил его, и теперь я получаю следующие сообщения об ошибк…
24 май '17 в 09:01
1 ответ

Обновление Clojure alter возвращает nil, а dosync не позволяет повторяться

РЕДАКТИРОВАТЬ: dosync создает себе функцию, поэтому вызывает recur интерпретируются как вызовы функции dosync генерироваться. Это след функции, которую я на самом деле сделал. Я думаю, что все было максимально просто. (defn change-to-ref [ref data] …
05 окт '16 в 16:10
1 ответ

Haskell в одну сторону `dupTChan`

Есть ли такая функция, как эта. Кроме того, когда вы делаете: newChan = dupTChanOneWay oldChan Все, что написано oldChan написано newChanа не наоборот?
04 апр '14 в 23:44
4 ответа

STM32F429 не получает сообщение CAN

Я использую микроконтроллер STM32F429, и мне нужно реализовать связь по шине CAN между CAN2 и PCAN View. Я могу передать сообщение от CAN2, но не могу получить никакого сообщения. Я использую трансивер CAN TJA1041A в микроконтроллере. Проблема в том…
05 дек '14 в 12:12
1 ответ

Выпуск инструкции по сборке

У меня есть небольшая проблема, какой набор инструкций мне нужно использовать, когда я использую неоптимизированные инструкции, что компилятор великолепен. У меня есть эта функция void, как это: void feed(void) { IWDG_ReloadCounter(); } Вот инструкц…
21 фев '14 в 21:44
1 ответ

cpputest на STM8 не удалось из-за нескольких основных

Я хочу использовать cpputest на STM8 и установить все необходимые инструменты для него. Я могу запустить cpputest на моем упрощенном коде. в моем главном файле, который принадлежит аппаратному обеспечению, у меня есть, конечно, основная функция. Но …
08 ноя '17 в 13:50
1 ответ

Уникальность типов вместо STM

Сообщение на форуме указывает на то, что вместо STM используются уникальные типы. Я не понимаю, что это говорит. Как типы уникальности предполагают решение проблемы, которую STM пытается решить, например, когда несколько потоков обновляют одну и ту…
15 янв '14 в 01:00
2 ответа

Haskell STM осколок TVAR

Я новичок в Haskell и STM и пытаюсь понять основную концепцию. В Haskell и функциональном программировании в целом, поправьте меня, если я ошибаюсь, нет такого понятия, как назначение. Я не могу писать x=3; все, что я могу сделать, это создать другу…
05 янв '13 в 14:35
1 ответ

Haskell STM: Как реализовать Obstruction Free STM с использованием Haskell?

Я хочу внедрить Obstruction Free STM (OFTM) с использованием Haskell для сравнения различных доступных политик управления конфликтами. Например, Транзакция T1 получает Tvar, скажем X, и все же совершает. Теперь другая транзакция T2 хочет получить до…
16 янв '15 в 09:53
2 ответа

ABA с программным обеспечением Clojure Transactional Memory

Мне было интересно, есть ли у Clojure встроенное решение проблемы ABA. Я создавал пример, который показывает эту проблему, но каким-то образом Clojure обнаруживает изменения. Это потому, что транзакции Clojure сравнивают ссылки, а не значения? Мой п…
10 май '17 в 13:33
0 ответов

Функция osMessageGet CMSIS-RTOS

Я работал над программным обеспечением, основанным на CMSIS-RTOS, и у меня проблема с функцией osMessageGet. Мое программное обеспечение состоит из четырех задач RTOS, и две из них обмениваются данными через osMessageQueue вместе с osPool. Одна зада…
30 июн '17 в 08:44
1 ответ

Измерение длины TChan

Мне нужно хранить буфер некоторых значений в STM. Потоки Writer должны контролировать размер буфера. Я начал реализовывать эту вещь, используя TChan, но потом обнаружил, что API не обеспечивает способ измерения длины канала. Будучи одним упрямым пар…
26 янв '13 в 23:41
3 ответа

Один атом против нескольких ссылок

Каковы компромиссы представления состояния с использованием одного атома и хэш-карты против нескольких ссылок? Например: (def start (atom {:location "Chicago" :employer "John"})) против (def location (ref "Chicago")) (def employer (ref "John")) Боль…
07 ноя '13 в 14:24
1 ответ

Есть ли в системе Zookeeper Watches ошибка или это ограничение теоремы CAP?

Документация Zookeeper Watches гласит: "Клиент увидит событие наблюдения для узла, который он наблюдает, прежде чем увидит новые данные, соответствующие этому узлу". Кроме того, "поскольку часы запускаются один раз, и между получением события и отпр…
21 июн '15 в 22:20
1 ответ

Переключатель рефакторинга или оператор if/else?

Я работаю над школьным проектом и получил отзывы от моего учителя. Он сказал, что в моем коде есть некоторые плохие практики, он сказал, что случаи переключения могут быть заменены полиморфным подходом. Только я понятия не имею, как я мог это сделат…
12 июн '17 в 07:29
1 ответ

СТМ и атомарно: почему семантика этих двух программ отличается?

Давайте рассмотрим эту простую программу на Haskell: module Main where import Control.Concurrent.STM import Control.Concurrent import Control.Exception import Control.Monad import Data.Maybe import Data.Monoid import Control.Applicative terminator :…
16 окт '14 в 08:09
2 ответа

Перемаркируйте номер темы в STM

Для презентации я бы хотел пометить номер темы моделирования темы STM (например, заменить "тема 40" на "тема 1"). Я, однако, не уверен, где я должен измениться (где хранятся номера тем?).
24 фев '18 в 03:27
1 ответ

СТМ с частичной атомарностью для некоторых телевизоров

Я делаю вещи с STM и использовал среди прочего TBQueue структура данных с большим успехом. Полезная функция, для которой я ее использую, включает чтение из нее на основе предварительного условия в TVar в принципе так: shouldRead <- readTVar shoul…
13 июн '13 в 21:22