Thanks, I'll give threads another try then, and concentrate on the pthread api.
El vie., 28 dic. 2018 a las 5:59, Johann Philippe via Iup-users (< [email protected]>) escribió: > I think using threads is the right solution here. But be careful with > those points : > -it's recommanded not to alloc memory inside the threads routine. It's > betterave allocating before threads runs. > -if sole variables are acessed on both threads at the same Time, it may > crash. Then you should use mutexes to lock data accessing. > > Hope it Can Hellp > Johann > > Le vendredi 28 décembre 2018 à 10:43:26 UTC+1, John Spikowski < > [email protected]> a écrit : > > > Hi Dan, > > I was able to get IUP to work in a threaded environment under Windows but > not Linux (Gtk) using Script BASIC. > > John > > On Fri, 2018-12-28 at 01:54 -0600, Daniel G. wrote: > > I have a program with a button that calls a function that can take some > time to finish (up to 10 seconds). I need the main thread to not be blocked > while this function finish so that the GUI remain responsive. I thought I > could use threads since even though IUP is not thread safe, I didn’t need > to update the interface from within the worker function. > I have near cero experience with multi-thread libraries but I tried with > pthread. So I created a new thread from the callback, this second thread > would run the worker function, then I detach the thread so that the > callback function can reach the return point while the second thread > continues, this would in theory allow IUP to continue his main loop while > the worker function did his thing on a second thread. Something like this: > > pthread_t thread_id; > int btn_cb(Ihandle *self) { > pthread_create(&thread_id, NULL, worker_function, NULL); > int pthread_detach(thread_id); > return IUP_DEFAULT; > } > > The problem is when I run this I get a segfault as soon as the callback > function reach the return point while the second thread is still going. But > before anything else, I want to ask this: > Is my approach with pthread even close to correct for what I am trying to > accomplish? Should I be using threads for something like this? > > I’ve also tried with fork and I manage to get the worker function to > execute while having a responsive GUI, but I think would rather avoid > processes and the more complex methods of communication it implies, like > IPC servers or FIFO. > > I would really appreciate if anyone can help me with this for my amateur > project. > > _______________________________________________ > > Iup-users mailing list > > [email protected] > > > https://lists.sourceforge.net/lists/listinfo/iup-users > > > _______________________________________________ > Iup-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/iup-users > _______________________________________________ > Iup-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/iup-users >
_______________________________________________ Iup-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/iup-users
