Hi Mickael,
b) has some magic synchronization which i dont see It could be a bit of all ;)
I found some magic synchronization. Actually parallel write is avoided in org.eclipse.core.internal.resources.File.create(InputStream, int, IProgressMonitor){ ... workspace.prepareOperation // global(!) lock ... (actual write) ... workspace.endOperation(rule, true); // global unlock ... } Daemon Thread [ForkJoinPool-1-worker-3] (Suspended) waiting for: Semaphore (id=374) Object.wait(long) line: not available [native method] Semaphore.acquire(long) line: 44 OrderedLock.doAcquire(Semaphore, long) line: 173 OrderedLock.acquire(long) line: 109 OrderedLock.acquire() line: 85 WorkManager.checkIn(ISchedulingRule, IProgressMonitor) line: 125 <------------- a global lock Workspace.prepareOperation(ISchedulingRule, IProgressMonitor) line: 2263 File.create(InputStream, int, IProgressMonitor) line: 106 ConcurrentModificationTest.writeClassFileContents(IFile, String) line: 97 ... Thats probably a (or the?) reason you see only little speedup during parallel builds.
Can you please elaborate about a concrete case you think can be faulty with current code? Ideally in a test case you could submit through Gerrit?
see https://git.eclipse.org/r/c/platform/eclipse.platform.resources/+/179934 Jörg
_______________________________________________ platform-dev mailing list platform-dev@eclipse.org To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/platform-dev