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
[email protected]
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/platform-dev