Indeed, this was the issue. Took Benno's advice and added a yield, and it works as I hoped it would. Thanks!On Tue, Sep 23, 2014 at 10:46 AM, Gregory Collins <greg@gregorycollins.net> wrote:Since this is UDP, you may be overflowing your device queue. Linux helpfully won't return ENOBUFS in this case but will instead just drop the packet on the floor. The threadDelay fixes this by yielding the processor so that the consumer thread can dequeue packets.GOn Tue, Sep 23, 2014 at 8:14 AM, Ben Gunton <ben.gunton@gmail.com> wrote:_______________________________________________I am trying to send multicast messages from one thread, and receive them on another. The sending thread reads lines from a file and sends them. However, the receiving thread does not receive all the messages - it seems to miss the last 10 message or so. If I run other programs to listen for the multicast message, they receive them fine. So I think the issue is something to do with receiving, not sending. I keep the program alive with a threadDelay, so it shouldn't be halting prematurely. If I add a small delay after each send, it works fine. And if I make the input file smaller, it works fine.On the provided data file, on my system (64-bit Ubuntu, GHC 7.8.2), the receiver fails to receive lines 125-140. Compiled with no optimizations.Thanks for any help!The relevant code snippets are below, and the sample data file and full program are attached.-- Loop to receive all the packetslet receiveMulticast = do(msg, _) <- recvFrom recvSock 32628putStrLn . BS.unpack $ BS.take 100 msgreceiveMulticast_ <- forkIO receiveMulticast-- Send every line from a file as multicast messageinputFile <- openFile "data" ReadModefileLines <- BS.lines <$> BS.hGetContents inputFilelet sendMulticast msg = dosendTo sendSock msg addr-- Receiver FAILS to receive last few messages unless this-- thread delay exists... why?!-- threadDelay (1)mapM_ sendMulticast fileLineshClose inputFilethreadDelay (1000*1000*1000) -- Delay for 1000 seconds
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
--
Gregory Collins <greg@gregorycollins.net>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe