TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #430 · 8.07

Воттоваара — хорошее место для первой в вашей жизни горной экскурсии. Там всего по чуть-чуть: чуть-чуть подъёма (максимальный уклон градусов 60 от горизонта), чуть-чуть горной тропы (длина пути до верха около 2км), чуть-чуть высоты (417 метров). Хардкорные трекеры и хайкеры преодолевают такие участки одной ногой, не прекращая завтрак. Но неподготовленный человек сможет понять, есть ли для него смысл пытаться идти в какие-то более сложные горы. Даже "заброс" на гору есть. Но если в больших горах это вертолёт или вездеход по болоту, то здесь вас около часа везут на внедорожнике через камни и лужи метровой глубины. Да, обычный автомобиль (даже кроссовер) там не пройдёт совершенно никак, нужен высокий, полноприводный и обязательно со шнорхелем. Но это всё равно более доступная территория, чем какое-нибудь Плато Путорана, куда вообще не рекомендуют соваться туристам без хорошего опыта пеших походов. Впрочем, тут ироничный момент. База отдыха на подъезде живёт исключительно на туристах, которые хотят посетить Воттоваару. Теоретически она могла бы проспонсировать если не асфальтирование, то хотя бы проход грейдера по "дороге" и присыпку грунтом: это существенно уменьшило бы степень опасности для людей и степень износа техники, а также значительно подняло бы удобство и скорость доставки. Но тогда люди могли бы добраться на своих машинах и не брать на базе дорогой трансфер. Думаю, в какой-то момент и внедорожники потеряют способность проезжать там, нужен будет гусеничный вездеход. Прикольно, что, чем выше идёшь, тем ниже деревья. Гора как бы награждает тебя за усилия всё более красивыми и просторными видами. В целом территория будто бы инопланетная. Очень странно себя там чувствуешь — ты словно и не на Земле уже, и вообще не в реальности, а внутри какого-то странного рисунка. #travel

Hashtags

Резултати

Намерени 5 подобни публикации

Търсене: #haskell

当前筛选 #haskell清除筛选
宇宙航海誌

@uchuukoukaishi · Post #368 · 31.07.2023 г., 13:36

今天下午碰到一个并发问题,之前写的 Haskell 并发代码有考虑不周的地方,在特定情况下会死锁,简化一下是这样的: replicateM_ n_workers . forkIO $ do { -- Worker 线程 doSomethingThatMayFail; signalTSem semaphore; } -- 主线程 waitTSem semaphore 如果 doSomethingThatMayFail 抛异常导致线程挂了,那么 signal 就 unreachable,于是主线程会卡住。而 GHC 直接检测到了这个问题并在主线程(比较及时地)抛出了 BlockedIndefinitelyOnSTM 异常。 有点好奇是怎么实现的,于是读了一下 GHC,目前初步的理解是:Haskell 中的线程本身是一个会被 GC 的堆分配对象,当前线程 block 时这个线程会被放到 TVar 的 wait queue 里。如果 TVar 被 GC 了,那么这个线程本身也就 unreachable 了(线程本身并不是 GC root),会被 mark 掉。GC 过程中,如果发现某个 thread 是 unreachable 的,那么在最后关头会调用一个叫 resurrectThreads 的函数(Schedule.c),这个函数会检查线程状态对象的 "why_blocked" 字段,如果是 BlockedOnSTM(在 park 的时候设置的),那么就会在这个线程里抛出一个 BlockedIndefinitelyOnSTM 异常(相应地,其他 block 理由也会有其他种类的异常抛出)。 这个机制不使用任何 timer,并且一旦抛出异常就是真的发生 deadlock 了。缺点大概是不 complete ,比如用一个 StablePtr 维持住线程对象的命,就可以 hang forever 了。 #haskell

Hashtags