[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Any2OneCallChannel deadlocking?
Hello,
I've modified the Any2OneCallChannel example that's part of
jcsp-1.1rc3 where I've added multiple callers for the call channel;
the example had one and I'm testing with 200. I've commented out all
System.out.* statements and each one of my 200 callers executes 100
calls in a tight loop.
My Any2OneMain main program looks like:
A[] a = new A[200];
for (int i = 0; i < 200; i++) {
a[i] = new A(c, 100);
}
new Parallel(
new CSProcess[] {
new Parallel(a),
new B2(c, 200 * 100)
}
).run();
where 200 is the number of processes and 100 is the number of calls
each process makes. The run() method in class B1 looks like:
for (int i = 0; i < count; i++) {
in.accept(this);
}
where count = 200 * 100. I wanted the program to terminate at
execution end and not wait to process.
When I run the program it seems to deadlock or at least seems to hang
for a long period of time. There are times when it completes but for
the most part it hangs. Forcing the JVM to dump the stack trace, I see
many instances of the following, I presume one for each running thread
"org.jcsp.lang.Parallel@31f26605" daemon prio=5 tid=0x000000010185b000
nid=0x110651000 waiting for monitor entry
[0x0000000110650000..0x0000000110650ad0]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.jcsp.lang.Any2OneImpl.write(Unknown Source)
- waiting to lock <0x00000001050d3f60> (a java.lang.Object)
at org.jcsp.lang.Any2OneCallChannel.join(Unknown Source)
at
org.jcsp.demos.call.Any2OneFooChannel.calculate(Any2OneFooChannel.java:
39)
at org.jcsp.demos.call.A.run(A.java:49)
at org.jcsp.lang.Parallel.run(Unknown Source)
at org.jcsp.lang.ParThread.run(Unknown Source)
My question is, is this a deadlock I'm seeing? Am I using the
Any2OneCallChannel correctly? If not, what's the right way. What I'm
trying to accomplish is having multiple callers call on a single
resource.
I'm running this on a MacBook Pro 2.6GHz 4GB of memory.
Any help or pointers would be appreciated.
-- Sachin.