Hi all, Relatively new to nim, very new to multithreading in nim. I'm attempting to run a program on a bunch of files I have the file paths for. The relevant code at the moment is the following: var t1 : seq[Thread[(string,string,string,uint16,uint16)]] for file in files: while true: if t1.len < int(thread_num): t1.add(Thread[(string,string,string,uint16,uint16)]()) createThread(t1[t1.len - 1], myFunction, (file, ... <other stuff>)) break else: var added_flag = false for i,thr in t1: if not t1[i].running: t1[i] = Thread[(string,string,string,uint16,uint16)]() createThread(t1[i], myFunction, (file, ... <other stuff>)) added_flag = true break if added_flag: break os.sleep(1) joinThreads(t1) for thr in t1: assert not thr.running Run
I would expect all the threads in t1 to have finished running by the time I hit my assert statement, because I used joinThreads(), but that doesn't seem to be the case. Is my logic totally off? Am I misunderstanding how to properly use nim threads and joinThreads() in particular? Any help you could provide would be much appreciated.