Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [henshin-dev] UI responsiveness by threading

Of cource, there is no goal one would try to achieve by intentional hangup. But, this is a scenario which might occur with beginners trying to test for limitations of henshin or during tool comparisons . This can easily be interpreted as a daunting example of immature tool support. Do you mean that the monitor should be included in the ScriptEngine scope so one could use something like "function(){while(!monitor.isCanceled()){}}"?

Regards,
Gregor

Am 14.09.2011 15:05, schrieb Christian Krause:
You have to assume a sane developer. Someone who uses an attribute condition "function(){while(true){}}" should be punished anyway...

But seriously, it is the developers job to ensure responsiveness if he writes his one units. So *he* (or she for that matter) must take care of regularly checking the canceled flag himself. If he doesn't, it's his own fault. Besides, in like 95% of the cases, JavaScript is used only for simple attribute conditions (without loops) which usually take only a split second.

Ciao,
Christian

On 09/14/11 14:54, Gregor Bonifer wrote:
Hi,
suppose you have just a simple rule with an attribute condition containing "function(){while(true){}}" (and of course some parameter's name). How would you propose to terminate the ScriptEngine.eval(String) methode without Thread.stop()? Or is there a way I'm not aware of to check some monitor's cancelation-flag while running ScriptEngine.eval(String) without using threads?

Aloha,
Gregor

Am 14.09.2011 14:38, schrieb Christian Krause:
Hi,
I have strong objections against Thread.stop() and I don't see a conceptual or technical problem with using a canceled flag (as part of a progress monitor). The interpreter itself does not need a cancel-flag. You can just pass a monitor object as an additional argument on every call of a rule or unit application, including units that are implemented using JavaScript (?).

Ciao,
Christian

PS: I'm not saying that we have to use Eclipse' IProgressMonitor for this.

On 09/14/11 13:16, Gregor Bonifer wrote:
Hi,
I am currently looking into ways to interrupt long-running or non-terminating UnitApplications. As mentioned at the henshin developer meeting this is needed to ensure UI responsiveness. I briefly discussed the issue with Stefan and our main concern was the necessity of using the deprecated Thread.stop().

1) In a naive approach UnitApplication.execute() would be called in its own thread which is supervised by an IRunnableWithProgress which again calls Thread.stop() when its Monitor.isCanceled(). - pro: On the one hand this would realize UI responsiveness without the need to on introduce new code into the interpreter. - contra: On the other hand the resulting model would surely be corrupt which is near fatal when using a graph contained in the TransformationSystem.

2) Another approach would be to introduce execution state information like a cancel-flag into the interpreter to detect whether or not to continue. The flag would be set by a supervising IRunnableWithProgress like in 1). - pro: This would enable us to cancel without side-effects by performing an undo of all applied rules. - contra: But there is no *known* way to propagate such a flag-state to the javascript engine while running an infinte loop. If we intend to cover the case of JSE hang-ups we would need to run the script execution in its own thread and call Thread.stop() when the flag value changes.

If we decide that the use of the depecated Thread.stop() is acceptable, there are no more contras and I would favor the second approach. But in case we consider Thread.stop() to be avoided, I would prefer not to introduce any code into the interpreter until we have some sort of wholistic concept for solving the issue.

Please comment.

Regards,
Gregor



_______________________________________________
henshin-dev mailing list
henshin-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/henshin-dev

_______________________________________________
henshin-dev mailing list
henshin-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/henshin-dev


_______________________________________________
henshin-dev mailing list
henshin-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/henshin-dev

_______________________________________________
henshin-dev mailing list
henshin-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/henshin-dev




Back to the top