id:amachang #3709(2007/11/05 11:21 GMT) [ JavaScript ] Rating1/1=1.00
JavaScript だってマルチスレッドできるさ><! Rhino で動かしてください。 きっと、もっとキレイに書けるんだろうなあ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
var lk1 = new java.util.concurrent.locks.ReentrantLock(); var lk2 = new java.util.concurrent.locks.ReentrantLock(); var queue1 = []; var queue2 = []; var eof = false; var eop = false; var infile = arguments[0]; var outfile = arguments[1]; spawn(function() { var input = new java.io.BufferedReader(new java.io.FileReader(new java.io.File(infile))); var line; try { while (line = input.readLine()) { lk1.lock(); try { queue1.push(line); } finally { lk1.unlock(); } } } finally { eof = true; input.close(); } }); spawn(function() { try { out: while (true) { lk1.lock(); try { while (queue1.length == 0) { if (eof) break out; lk1.unlock(); lk1.lock(); } var line = queue1.shift(); } finally { lk1.unlock(); } var m = line.match(/^(\d+\.\d+\.\d+\.\d+)(.*)$/); if (m) { line = java.net.InetAddress.getByName(m[1]).getHostName() + m[2]; } lk2.lock(); try { queue2.push(line); } finally { lk2.unlock(); } } } finally { eop = true; } }); spawn(function() { var output = new java.io.PrintWriter(new java.io.File(outfile)); try { out: while (true) { lk2.lock(); try { while (queue2.length == 0) { if (eop) break out; lk2.unlock(); lk2.lock(); } var line = queue2.shift(); } finally { lk2.unlock(); } output.println(line); } } finally { output.close(); } });
Rating1/1=1.00-0+
[ reply ]
id:amachang
#3709()
[
JavaScript
]
Rating1/1=1.00
Rating1/1=1.00-0+
[ reply ]