2010-11-08 3 views
1

Je suis tombé sur un code JNI natif qui utilise les appels JNI-> MonitorEnter et JNI-> MonitorExit pour synchroniser un morceau de code natif. Mais ceci est maintenant devenu un goulot d'étranglement et affecte gravement le débit du système. Je considère que tous les mécanismes de synchronisation alternent avec MonitorEnter et MonitorExit de JNI.Alternatives à JNI-> MonitorEnter

Connaissez-vous d'autres alternatives?

[Quelques liens http://java.sun.com/docs/books/jni/html/other.html, http://download.oracle.com/javase/6/docs/technotes/guides/jni/spec/functions.html#wp5256]

Répondre

0

Est-il le temps passé prendre le moniteur qui est le problème. Ou (plus probablement à mon avis) le temps passé tandis que le verrou est tenu? Si vous avez besoin de protéger un morceau de code JNI, alors vous avez un thread unique là-bas, donc ça risque de devenir un goulot d'étranglement. Pouvez-vous minimiser la section critique de quelque façon que ce soit?

Pouvez-vous réécrire le code pour être thread-safe?

+0

Je voulais vérifier si le problème venait du moniteur. Réécrire le code pour être plus sûr pour les threads serait la dernière et dernière option. – user170008