hPutStrLn is not atomic
Open
documentation
- Dominant language
- Haskell
- Stars
- 301
- Forks
- 144
- Avg merge
- 7d 22h
- Merged PRs (30d)
- 1
Description
Since the newline is added in an additional hPut call another thread might write to the handle in the meantime.
I think that's acceptable but should be documented.
```
-- | Write a ByteString to a handle, appending a newline byte
hPutStrLn :: Handle -> ByteString -> IO ()
hPutStrLn h ps
| length ps < 1024 = hPut h (ps `snoc` 0x0a)
| otherwise = hPut h ps >> hPut h (singleton (0x0a)) -- don't copy
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.