Вторник, 13 августа 2013, 13:27 +01:00 от David Matthews <[email protected]>: >On 08/08/2013 07:07, Dmitry Popoinikov wrote: >> >> >> >> Вторник, 6 августа 2013, 13:55 +01:00 от David Matthews < >> [email protected] >: >>> On 04/08/2013 22:31, Dmitry Popoinikov wrote: >>> >>> Hi Dmitry, >>> I can't see there would be any problem with running a Poly/ML program >>> for a long time. Provided your application only requires a constant >>> data size there's no reason why the heap should grow beyond a steady >>> state. There will be periodic garbage collections of course. >>> >>> I've now added code to the SVN version so that a thread created within >>> foreign code can call an ML callback. I've done some simple tests of it >>> but you may want to test it more exhaustively. >>> >>> Regards, >>> David >>> >> >> Hi David, >> My program works well now. Thank you very much! >> > >Hi Dmitry, >I discovered a problem with the code that I added and I have had to >remove some of it. In the callback code there is a check to see if the >thread has ever been in ML code before and if not Poly creates some data >structures for it which includes an ML stack. The difficulty is in >knowing when to remove this data. Threads created by Poly always call >an "exit" function and that removes the data for those threads but it's >not possible to use that for threads created by foreign code. I added >some code to the "main" thread to try to detect when a thread has exited >but that caused crashes. It seems that, unlike with Windows, there is >no safe way to discover when a thread created with pthreads has exited. > The simplest possibility would be to remove the data and the ML stack >as soon as the callback returns, if that callback created the data. If >your thread is making many calls to the callback that could be >expensive. Would that be a problem for your code? > >Regards, >David Hi David, I've tested my program with r1833. It seems everything is good. -- Best Regards, Dmitry
_______________________________________________ polyml mailing list [email protected] http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
