I have small program that need to be executed every 5 minutes.
For now, I have shell script that perform that task, but I want to provide for user ability to run it without additional scripts via key in CLI.
What is the best way to achieve this?
I presume you'll want something like that (more or less pseudocode):
import Control.Concurrent (forkIO, threadDelay)
import Data.IORef
import Control.Monad (forever)
main = do
var <- newIORef 5000
forkIO (forever $ process var)
forever $ readInput var
process var = do
doActualProcessing
interval <- readIORef var
_ <- threadDelay interval
readInput var = do
newInterval <- readLn
writeIORef var newInterval
If you need to pass some more complex data from the input thread to the processing thread, MVar
s or TVar
s could be a better choice than IORef
s.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With