Производитель и потребительская проблема в Haskell?

Это должно дать Вам, в чем Вы нуждаетесь:

Система использования. Безопасность. Принципал;

...

var sid = WindowsIdentity. GetCurrent ().User;

Свойство пользователя WindowsIdentity возвращает SID, на Документы MSDN

8
задан Don Stewart 17 April 2011 в 21:36
поделиться

3 ответа

Абстракция производитель / потребитель, использующая вытесняющие потоки и сообщения, передаваемые через канал:

import Data.Char
import Control.Concurrent
import Control.Concurrent.Chan

main = do
    c  <- newChan
    cs <- getChanContents c     -- a lazy stream of events from eventReader
    forkIO (producer c)          -- char producer
    consumer cs

  where
    -- thread one: the event producer
    producer c = forever $ do
        key <- getChar
        writeChan c key

    -- thread two: the lazy consumer
    consumer = mapM_ print . map shift
        where shift c | isAlpha c = chr (ord c + 1)
                           | otherwise = c

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

14
ответ дан 5 December 2019 в 07:36
поделиться

Я добавлю к отличному ответу dons , что основной механизм здесь - это нечто, называемое MVar , и это императивный параллельный контейнер по стоимости. Вы «вставляете» и «входите» в MVar и выходите из него. Получение пустых блоков MVar, как и установка полного. Это одновременно механизм связи и механизм синхронизации. Я считаю, что он был изобретен Арвиндом в рамках проекта Monsoon / * t. Есть красивая книга Нихила и Арвинда , в которой объясняется их pH-диалект параллельного Haskell. Многие идеи были приняты в GHC, и книгу стоит прочитать.

6
ответ дан 5 December 2019 в 07:36
поделиться

glob в скалярном контексте:

В скалярном контексте glob выполняет итерацию через такие расширения имен файлов, возвращая undef, когда список исчерпан.

В

foreach (@list_env_vars){
    print "$_ = ".glob()."\n";
}

] glob () действительно существует glob ($ _) . На каждой итерации $ _ содержит строку $ SERVER . Учитывая, что переменная среды не изменяется, $ SERVER заменяется той же строкой. Эта строка возвращается в первый раз. Затем список исчерпан, поэтому возвращается undef . В третий раз мы начинаем заново. ...

Уточнение: Не имеет значения, что аргумент для второго вызова тот же, что и для первого вызова, так как нет возможности сбросить итератор glob .

2
ответ дан 5 December 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: