LINUX.ORG.RU

вопрос об RTS ghc

 , ,


0

2

Есть код (библиотечный)

-- safe, because this call might block
foreign import ccall safe "waitpid"
  c_waitpid :: CPid -> Ptr CInt -> CInt -> IO CPid

getGroupProcessStatus :: Bool
                      -> Bool
                      -> ProcessGroupID
                      -> IO (Maybe (ProcessID, ProcessStatus))
getGroupProcessStatus block stopped pgid =
  alloca $ \wstatp -> do
    pid <- throwErrnoIfMinus1Retry "getGroupProcessStatus"
		(c_waitpid (-pgid) wstatp (waitOptions block stopped))
    case pid of
      0  -> return Nothing
      _  -> do ps <- readWaitStatus wstatp
	       return (Just (pid, ps))


getAnyProcessStatus :: Bool -> Bool -> IO (Maybe (ProcessID, ProcessStatus))
getAnyProcessStatus block stopped = getGroupProcessStatus block stopped 1

Правильно ли я понимаю, что функция getAnyProcessStatus данная функция будучи запущенной без WNOHANG (True третьим параметром) создаст (использует ранее созданный) дополнительный OS тред и будет в нём висеть?

★★★★★

Ответ на: комментарий от true_admin

Лень, и тем более я могу упустить вариант с тем, как правильно тестить (зависимость от RTS опций и т.п.) хотя надо бы.

qnikst ★★★★★
() автор топика
Ответ на: комментарий от qnikst

Я не понимаю что именно под тестированием ты имеешь в виду. Ты про strace? Собираешь бинарь с теми опциями что нужно и запускаешь.

Но, если приложение уже есть и оно не виснет при заблокированном waitpid значит там треды. Это всё можно даже через ps посмотреть. Особенно посмотри на WCHAN в ps -elLf

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Я про то, что в есть зависимость от того threaded RTS или нет, возможно от чего еще. В общем посмотрел, немного неожиданно себя ведёт.. Но почти что так как и думал.

А вообще я в тред экспертов по хацкелю ждал чтобы рассказали много интересного :)

qnikst ★★★★★
() автор топика
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от anonymous

угу, а без threaded будет в основном видеть радостно заблочив рантайм.

qnikst ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.