The Scripturian environment is designed for multi-threadedness and does the "right thing" in terms of Nashorn contexts/globals to ensure separation. In concurrent environments, using locks can be useful. Might not the best choice for high concurrency, but it sometimes it's necessary, especially when working with 3rd party libraries.

It would be nice if "sync" were added to mozilla_compat. Isn't the whole point of it to support legacy code?

On 10/11/2013 05:23 PM, Hannes Wallnoefer wrote:
Actually Rhino exposes a "sync" function for this purpose, org.mozilla.javascript.Synchronizer is just the class implementing this feature and not meant to be used directly by scripts.

While you could do something like this in Nashorn I would advise against it. Thread-safety is not one of the primary design goals in Nashorn, and nowadays most people would agree that there are better and safer ways for working with threads. I suggest looking at Worker/Actor models where you have multiple script engines working together through message passing.

Hannes

Am 2013-10-11 10:45, schrieb Tal Liron:
Thanks!

Would it be possible to add this to mozilla_compat.js so that "new org.mozilla.javascript.Synchronizer(myFunction)" would work?

On 10/11/2013 03:31 PM, A. Sundararajan wrote:
There is a 'sync' function in a demo application (jconsole script plugin). This may be of use.

    var sync = function(func, obj) {
        if (arguments.length < 1 || arguments.length > 2 ) {
            throw "sync(function [,object]) parameter count mismatch";
        }

        var syncobj = (arguments.length == 2 ? obj : this);

        if (!syncobj._syncLock) {
            syncobj._syncLock = new Lock();
        }

        return function() {
            syncobj._syncLock.lock();
            try {
                func.apply(null, arguments);
            } finally {
                syncobj._syncLock.unlock();
            }
        };
    };

See also: https://blogs.oracle.com/nashorn/entry/nashorn_multi_threading_and_mt

-Sundar

On Thursday 10 October 2013 03:16 PM, Tal Liron wrote:
How does one create synchronized functions in Nashorn?

Rhino has this facility:

function myFunction() { ... }
myFunction = new org.mozilla.javascript.Synchronizer(myFunction)




Reply via email to