www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Doug Lea's "concurrent" lib

reply Ben Hinkle <bhinkle4 juno.com> writes:
I've started a project on www.dsource.org for porting Doug Lea's
"concurrent" package. The download section has a zip file with the
code or you can get it from the svn repository. The doc (converted
from the orginal Javadoc and generated using doxygen) is at
http://home.comcast.net/~benhinkle/concurrent-doc/

Anyhow, I'm looking for either anyone interested in helping out or any
pointers to test suites for synchronization and threading. So far I've
done the basic Sync and Barrier classes and implemented a Java-style
wait/notify struct. There's just one file that knows about D
synchronization internals and has platform-specific code in it.

-Ben
May 02 2004
parent reply Mike Swieton <mike swieton.net> writes:
On Sun, 02 May 2004 15:55:58 -0400, Ben Hinkle wrote:

 I've started a project on www.dsource.org for porting Doug Lea's
 "concurrent" package. The download section has a zip file with the
 code or you can get it from the svn repository. The doc (converted
 from the orginal Javadoc and generated using doxygen) is at
 http://home.comcast.net/~benhinkle/concurrent-doc/
 
 Anyhow, I'm looking for either anyone interested in helping out or any
 pointers to test suites for synchronization and threading. So far I've
 done the basic Sync and Barrier classes and implemented a Java-style
 wait/notify struct. There's just one file that knows about D
 synchronization internals and has platform-specific code in it.
 
 -Ben
Cool ;) I was actually just minutes from doing just that myself, heh. I continued doing some more on some of the Executor classes (easy), and started the LinkedQueue class. I made Channel and friends templates, and changed their APIs accordingly. Some input on these changes would be appreciated. Matthew: what can we expect from the DTL as far as things like thread-safe collections are concerned? I'm not sure what I'm really asking here; I'm just wondering how/when the DTL will affect porting Doug's library. Currently, it segfaults, and I don't know why. I have to go do other stuff today, and I'll look at it again tomorrow. Right now I am primarily interested in feedback on the API changes and such that I've made. I have not updated much of the documentation that was copied in, and I am not sure where the InteruptedException fits in yet, as no D analog appears to exist yet. And no Windows or multi-processor testing has been done whatsoever. I don't have access to either. The latter will probably be a PITA down the line, though... Mike Swieton __ Our earth is degenerate in these latter days. Bribery and corruption are common. Children no longer obey their parents. Every man wants to write a book... The end of the world is evidently approaching. - On a stone slab carved in 2800 B.C. in Assyria
May 02 2004
next sibling parent "Matthew" <matthew.hat stlsoft.dot.org> writes:
"Mike Swieton" <mike swieton.net> wrote in message
news:pan.2004.05.03.01.29.03.75384 swieton.net...
 On Sun, 02 May 2004 15:55:58 -0400, Ben Hinkle wrote:

 I've started a project on www.dsource.org for porting Doug Lea's
 "concurrent" package. The download section has a zip file with the
 code or you can get it from the svn repository. The doc (converted
 from the orginal Javadoc and generated using doxygen) is at
 http://home.comcast.net/~benhinkle/concurrent-doc/

 Anyhow, I'm looking for either anyone interested in helping out or any
 pointers to test suites for synchronization and threading. So far I've
 done the basic Sync and Barrier classes and implemented a Java-style
 wait/notify struct. There's just one file that knows about D
 synchronization internals and has platform-specific code in it.

 -Ben
Cool ;) I was actually just minutes from doing just that myself, heh. I continued doing some more on some of the Executor classes (easy), and started the LinkedQueue class. I made Channel and friends templates, and changed their APIs accordingly. Some input on these changes would be appreciated. Matthew: what can we expect from the DTL as far as things like thread-safe collections are concerned? I'm not sure what I'm really asking here; I'm just wondering how/when the DTL will affect porting Doug's library.
Hmm. Initial thought was: nothing at all. Perhaps, it may be that if we (I) get the mixin, and they are selectable by template parameterisation, then we could make threadsafe collections just by having a null and a locking mixin. However, I think that collections are always the wrong place to be putting synchronisation logic, so maybe I'll go back to my original answer. Anything else could be characterised as intellectual playing-with-oneself.
 Currently, it segfaults, and I don't know why. I have to go do other stuff
 today, and I'll look at it again tomorrow. Right now I am primarily interested
 in feedback on the API changes and such that I've made.

 I have not updated much of the documentation that was copied in, and I am not
 sure where the InteruptedException fits in yet, as no D analog appears to
 exist yet. And no Windows or multi-processor testing has been done whatsoever.
 I don't have access to either. The latter will probably be a PITA down the
 line, though...

 Mike Swieton
 __
 Our earth is degenerate in these latter days. Bribery and corruption are
 common. Children no longer obey their parents. Every man wants to write a
 book... The end of the world is evidently approaching.
 - On a stone slab carved in 2800 B.C. in Assyria
May 02 2004
prev sibling next sibling parent reply Mike Swieton <mike swieton.net> writes:
I feel dumb. Here's the file that was supposed to be attached to the other ;)

Mike Swieton
__
If all the human race's collected information could be made available to
anyone, anywhere, at any time, for marginal cost, would it be moral to
restrict access to that informtion?
	- Eben Moglen

begin 0644 concurrent.tar.bz2
QlpoOTFBWSZTWe18yL4Br5J/////////////////////////////////////////////4Yb+
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
7xvLxc0TTNbM1o0but84FdateNb1TW64tbveHHob4OTfOm8I7LrWy26zNJW6rMQAyMCSPw0K
0jAgjMUoK1bZJpataFU1bbZWSU0tKlaqyVMUVWqQkqttaysVqrCqUxRTYlmq1kgvOdGUk2kq
SRW1d3Y6zpq0lapRFZWJasUllLW1bVLahLK0Qk0q2qjVKmRJSyVNTKkrK2pWlW7u1aVVsNFT
MfP+y7MbyCsqtpN6usddbe6Lu1U1Uqh5HQ8s6PKjbrbVRtWVpas626aiWqspRTSrbrdVqHR1
VE7g63W6zV0bpTdZ01alatlYramK2VlKxqBRlNtj6ljefz3ZjYFTIiBEA07Q2HHaEggHRkAQ
8nYOtnhClr91uK34qPpMC2Wtv19VVANaISIbog/I1v2c+mfV/xddkFPwYan9uhBBdIQlEN/F
DlfhyLK5jJWXuLt0bgBEBuzBAEQNCjkVSZ1smcghJHBUFDCbv836fxtP6mYMg5AYwzkbOp8k
sZ4qMpiXJddtHRhEtsgCdgyBAO1gJtp1NN3WkpjT3SFO1QEJRF85VRO0UVQ7AIAgVvaUbS9f
eI9gjp4YaIgV4ZCpi3yUA6TC+OWMJxb46xbbGsTWtsYsza99YWYvKyr5mbXym1mU5zU2mqvV
71WM2WteLTn+DSsYzqsXtbU62tq+ytZm1X2azrFZmbbW1qavvqsyxrWdVe+M2vmk3m+F6qsW
rGrXterf3NsWrNtTOsb7axrFs5liZ4rabYpWLCrXtYR3u/3OyuIimPq+jLIGadbONBU/D6XN
sahaSy+zzc1Wql5R4QDHt2CSIiEo4UxaQg0nLVVAAOH59ExQvxCIC+FwjOBUdbbjDrUiRhMC
SdtMUnXNSskYqKbt0TWKA4iiKtGiuynTAZTzNVIAKjgU/CiZCwhqoIET8yBYdmFL4+MNUAPD
BOGSRxqCBKGQAE+9drjC/RcClNZucKpfYGTSgL4dDQodTlqMSV+FXRsBBIraBh4tIZHYQFKZ
MaGrlVEoi3zCyzKy+ZVyVL48Y0nlDBmeXNY0HUiEQIqsGCsamIrVYWJJjhdm2MCMCGVElBZV
YT0g+55sz7mGpkziq7ECSRkkAkBJAZGRB2bsyACTIGYv7/Jbr3G8Ra7sbOsQ2QBC6x7tJE+y
AgDXDJsDeC/ELFjsECqHL3CnMS8oy+aanGCiGBhmAQICHHfylCBWuQFMg0GlSycSkDBlxp5Y
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
J1c0nDql8XNsR1HI2ezg7F7LtyTDgw5NxTENjTS6O5yU+DqaaU8MGGzk2XcinD1ebo6vZDZG
yV3dKmG6kZSaWcLtnRy96u7Dl5u5KUkngwwqVR3Ks8DxK5TZVbG7ZpjDDsjZw8uq5zX5d149
nIUu8OJbfFu9EtNMFkrIsnzhB6LsN3VTVScPJhGiV2lHycOFyXZ72zTJThZw5t27SObZxl4b
Hiz2POYP2UoR+lc+Lq6HboMF+yfJ/Xj9xEylJ/7dKRp1+Ld949Dk5N9zLZ8HTe7VJRyIwxY9
nDT3MLvNldh14RTvL3GXCSPzLODqYYyVTU46rvw9e20Z/AZWerZSyVkZU7OWV2GVmyyxphdd
c0MN2mEXaUs5tKZX6NLtndw9G45pP5hLhts/gV9zm5uT7fY6KUu+xxoxGlnKsU9Xhg+SNzsX
94dOw0bPcadnqXYezkdnU8OejRKI5m/Zs4bvzNPC7mps4c5Xyaxpk05GNP1HqNRxZB0eByT5
lSVU86lKOrHkaYqQpQVKiVUmlTCoT7FdB9T2NNOvY08GK6NPPLTDMLJSwVlZLjXQldN2C2ve
jjDRrQ0KS03pKXvlZLW7kiynmbNl3d4c1nZ0qOa7+c6F8tzKznCLPouswxHNvd5mRZPvPJhl
hThlSkuS7dKUpJSg6XVECUnmJB3JjaxsM7ay3SSkbt1FJXSY8PCyyX0SjhpzjZdTJxYZWovm
6yxKcvv3UXRF1JXWWWcGCx+VQu5uEsOjw5MsuaV2l2jd62J/HdTpHD4fezR8akUqVKUUqVKV
2O5ec8WqfH5O5UnA9bocO86NPVZTpye56qWXhc7oih9j3PxN1zs8272OT2ZYe5ze5F454V75
tWrROxD6PeR+Z2fjbOHDgizgsuXbPZg6HzeHJ3UpD2SplTs+TDKMnJEpLvipaxMqdFYN130f
J2Zi6GjXd7o6pMuTNl1LFi6Jeo+jcyxiLsujBHNT8zb26afvL+iSFkxDPc5z30Oek7ViTFPn
oNyNJpkz65bcmQjxPb44k0jklpL4ouy7qS+tJlKxw7uinN4Ju/O+B4tRD5K8XU9avweR4PYo
cHuPJhuw8LIeiSN0pNkaJb+Th0aQfalzcKiXBR9Eq9lc8vehZ3Ss893k8jwy5vm3e51jfZTR
wn1dWH0Ojgkdo1K0LRKt1GjRklYMUxTFYVSYnrUbuqOhcshQlDh6IklL3t3l8zsWXNFFO7Si
Mt2XuSl0cNxGJaR6KYc3f+70mxYPHh5HpTcrvdTbyaYqleTRJhF3NnbiJbOn6FLHCTySzH8w
5I2eZ+M9yzg+CUcOjk+WTrhlgpp6+7Hkky9WkXXSOSMPwPwLxCFqZe5L4OTKXz04XVPuesuz
qlQ28yn+iu57OJd2XmphHvclIsbLSTFoRK1HRLmvu9V0ZS3YeGmyPc3dFndQsdEn31jkhH51
yySxl0fqQuj0so4ZeFjZhhSxckSuwlZdZSIlZ6LH2JWYeqI/Ew7LsPZTRbkcnJ51eSo0qVKm
6mK4lGzq02bK3fNZswUw8LFiUWe8lwu2lZhSko0keqLubolusUyrZuswklcqWGyPCw7JXU5q
c2zDRsVLA4e9d5sNCkmC6qmxz5Lt4IY5MMx7uSnJT9keQ8KUczyVSlnc+x8z3u/Dq19Lvnme
D0tNNMr53afS9HqcPGEdGOFc24+phbFqXp324wynnbNOTBp6urWJPMVZN1PmU0s7Kedjzs7z
GjtXqjpRVO1knJkTE5uY5HLPlTk3XiPEqWeSnVaNJdWVzC8rIXJJfoey0RyFTZLuroVKqTmo
aVizSU4b05kjSYk29iN6m3Jjwecc1GlB0Yx+B6zEnBUmysUxVUqqxiKpVRjGMVnHV0abm7md
XDfq3kOCydmMJsVVSlMrciIRHJuSUm5ZxKT7xp1dXPUx2zkpTksblI0qK4bNHjUY2bMaexsx
JsxhwqN7E7jE4kG/fZ9++T7AfdITTaWSY0hpNomk2hMT4eZ9rN2VsOEJMiaKUZ4Y70yA00Wk
RJgwLEAIEAeJ2fYbXn9eHtIA+BAPJs/a7zm2TR49Dk95lU5hzzfLwYmUTB/r0C+CQg0KYhSF
EOw42jR6GVXXblXHW9/TeQh6GC5D46odOTVLQEh29eWez5naX8fxetuZMh7O077FU9jCrNQL
QqQygnszOD+tVr898n5Xwurqrwe5ybpH5X6j5DE2VI6MMQeD9Z7HfI89jlTOb3OsInJ9D1tJ
HxXtQ5pNtzm3ZLijnaTnM00UUP3/AyAcI4L5t2mEIyD7jBLR8wROSUQg6qQaRpidmvtP9zy1
JJOx/isf2zQYEIT0onK+Ne0gyDIeqplPpRG+UKPNTTEA80UCA2698nu7ih6oLDtYdAhwSBky
dp4/F+90YuPEOFNrYPlUNQ3k+L6ePC8nIg1FyK84ieGa6jzcl132RpyUwz464N6JDN2dJ4Vy
gMjlkiJ/fHQZH9B9w/hUjZSf0N4hyczpS1IGmxS48W9L0jinSPY96HSIWOyLFQxi+sGxD2xC
g3p7EooTyBo7M4pQBcOtcqibP7GzsESR7FgIYCbUkJiahSZB3g0K64poDQNIgs9gwJeyR/Z7
nqu2WLos/ihC7SyYhgYNCljJKJf6RizDhpF0NmlGEstkrrOTDQoSRcul/EyiTdErrrpfxpU5
uUbylZQpplS0XRlLcvNOZsvnBKMFQjdpzKYZfxkxDIyw2iK1tUfJpphRlLAzFXaZWMo+DKy5
TJKm1UVyVWNaTTkbkrZVJo0sl/aZWWXJGDTZhu/sNjZDSlJEtkolSlObe9mzLG7EWSSyoppi
o72zFNP6W40qtjzqxUncrKbGKkopSiZ80dkrOj2KcMopJlLhqIkdViNTY/5QQVo6K5Io6LI8
LJ3Zbt3JSWCOCOzgRpu27MKXNjZvsWZX9FM4zVJrXT/WDQpMzFtkd+ZSISiSTybo3XREWmOJ
aSFSKb+MrwhrMeOHNdGCMm5R1SUcLFkUjBkk4LuHGGKlKdZYxSTSVhXNtzlugaKSjZ279nRY
3qcqkYNJOFdXMXMGCS9VAphuPvKaMIiNmkpUxPOaN0NEvZg3rTh1NSSau0xiIukR6OGy0EGS
NjQhYJYSwsiY7PBg2bJhUK9WQxRXNfGncaDGUdl07b/YDclVCISEEpOBDN1U5O/8w2SA8z+W
p3f3y6Po4Pg96UtP7aPRLq6sKKeq7Cx6d+Hxt2vN2R2VK/hYmH+NuaVpjqjKPgu+3qdXRpd2
eZ1cjq0sPJEGzqtEbH95Ax+J0I2af3MYkve2axpg4bkRLw8NGm7m/afat/f0l0aR/qHQz6qR
FPZyd2n5FCngjPutpG71ejBKV35XMu4dXCuileSpP76j+Nu/3vRs5vrfEeT437J95+u2eR5v
R5vko+cxb/DY7d/3Pq/FbXtUW0jdL/Wo+bkhRyXURk0fUlqJWaLaNl1MI7ruqy6qeSSpWfgU
UhKHc0WWY+5ZZLdKlOaKIWerZsuXdVEur0d1xg6lEbuzBYdWzcRh9583Q6G7ZujsYYbLOjk9
HCl3DhRSUvtXbNMsGzkj3eHVo9ynJp10wpmbpitMU0VSuR+B7Jcl5OqzVNMNVD3Ssd0lxJ2d
kqOrKnNJw4ac2OrWpph2LFl8tlj3LLo9kkZiLHJ0XF3gqnqXb+Ob3bltHVdubSOSilyXJJsT
H6zWfilxgrj0dy6HU+b7lP3mz4MtkuH4Wn2nVs5sPwPhd5OBt8TYrazivzH+Mu89pdqa99LO
xKUUw+8qtHyu82GysUeStL5WdVPJX95XvcE6tD+60jY0xs/A/Ad75nDqqeVk8jyNKdjGyafU
8XJt5JW6jslOiVkuSW7qqmz0P7jmp+R4fkbI7JckoLpcPksws5LurKPcSJIlDqYdkWU8lHCX
4lKLrKLMLrIZSySlJ9Sz8r0XR2aU0lEpKWUGxZCiLuCT9pY3Je56KeEu0/B/rlNHhUYlDi75
17LmZfQl2exVvNzWhHs6+k7erhl6VXuYUeimz1tnoU2VHXdo1Im5XYqPBT8amchy4axqGkW0
gmxc/E9wPVBrkDi82B0p3pG3XjINz5tvePxX4JycHGIiJDsxdrY3I3SmkzRtoym0tsDRGm3H
bbB0Es5NmFBVjDuY0iwqxEpWldF0m8TM4ktiTOW3ibb3JnqbEiSLMIxNtvWOLaUqlSpiI+xZ
IOFRIpKSOG7IaKiPuJSHufExNiyQ6KiRMEVHAcQiLSvjkRk4xAFziwNBFY9R5Nztzs2lkdG+
BMdBIFNkm2tNTSb07nb4H2L4/r1t3WNTFsLUmP4ubC086cRSDyfoPO/RT3J+oUlbMEpiV6Xx
v9c9DsDuKrzPMp701J0eJwmv/OK0kPFUVqYlf1fJ7VDEpsgMkmg0EIQhAfdXXahgzu+Wcs7P
2So/u/jYfrjOIiDL5PyLNfXm215q2r34fofn027Pc05sPuZftv6j9doySfrSeSXZ/NfjfqOh
hp3WdWH5Tw3EuJMuz8bB5PXB0ebky6sOjw0Kc2Viz++JObhl3crf5zo6P8RLq+DLyjuw12f5
C7L3LOqjC7s4bXLrO1lLMwglRb3SrKY6MX+Ctzmu1dpMQ0vhpctHR7kosa5PnTZqG6zPCVWX
WfvpzYlS6UfzHVo8t0sLOyzutEXV6l3KWScuqmn6X9Bg6R51udF2lkuyU7uhZdLmp7/435n0
Zy9ysvEePesjh70+nSj7pbvJ4e27FscElou58TCC9peHMtJSTZdZezLCMuFJu9G+/TFu7LZs
ZybebZ1VsSy39GyX76I2dEbuEfp6vk7uRstLvjSVkS6NLOr0e91PDT9h80vwxZ958XU/mIMl
Pztzq5FJSkIUgd9de20c7nHVtmmxFJFKW0DoG8PtimSVZCxZH7pBgg/WaU/37hNHQc2jH9ky
P8uCf01/DQpJOT6RU+xon4HtVseBB/ePhfQ+h8DHw/Z9Ju3SKI+nLbbVVVVVVVVVVVVVU+IY
ejR1cjdELoptqEsqS/XNvvvyMGzJhCpjTmqY05v1Ddsa2PiPtGcncxiyRUaQafwOr9Dm5PwN
CjaIhuS2d2eT879Ri5S8QeZCdm72LLMoh5u5G6wh0fR9+SfKYW2LLS08wmnzK/Z5NuXs1ru9
m91mvjVrSqohKksLKWfsuiyktGXd3fYw2fB9SzTDB+uu2YUuUWYWUsslSUrpSUc1kvcs7JaM
pU6nJdu2ZWYSZJbqP1MrNn6VndZu2OinzJcJcnDLdzYXSRZdupY/6tTZZsyu0ussl9TKyW67
DLyU2XcJebo04S4SbGVKR4XbsJSyslZSzDKxJ9p+y+82N0beEt0rXUhu3S4WWShm9qzS6XDm
s0ulLTTZS7s6OEpbMtkmSzq++lSjeIdIhwJ7jucJpXJTFbleZ5MMuSuvSikqUcC7dRddLc6O
bvvxjezaeVszadLrQfpuuzu9W+nEtMLrJZXa5sW5SeFlJYZbJfhWRdZKKaUuykVJHRxsl24b
nNsizKMsst3q333wTZ0f4z9L8D8Tq2I8nVu4KS8lKPR2XbMNn4mzKzLyP5rhZ9aXZp4YRydG
7hhKF0qZUySld5WpZpKn2XLOzm57l1MN6XdSW5hS6UufLZj1U5MPff4bZaSSSnTc2XPNGGUv
JKMrOaWV2y5Yw80sqXXSldhZlluwyth9F3N8mUZaS0WilHmldd1x5MHJlMUo9XRzXablUlyS
u2bMtNLMRdillPNJZczFMui6y7BjZh5t11l1258GEaEskycmijhhfmbNml4rs1MPYxVWFeZ3
NNKOjucPc6rMt8o+azZEI6fjPziYQfrrKPtMJT++++/04P3qkfZ9o/wjmcOh0fy1R1dXgRj9
r0Q+L3pKQ682ElkR6QfR9b9+PmjmsuMVTd/VadlcnuY6OB3CfrnKJK1PEe573AnNucJ3Kp37
yVOkmzc1uvXLbNUqfnW01vT5YrWqt+D7e2KY4ndqlqVN9b343ys3let5zja1rGY3libTvLM2
xvtepvvqWG7dhk2SbrN27ddLdki0tavi+/GON+OMGGjdllhswZbtmHGHE7S31txvW/FtEpvP
FUrWpm2ZnTLbhPDhqJxTibWpbji3HF75xjHHGOONtta7xKJRKSk83cNKVUfO6PuGJ2foj6Dv
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
ENiTZss0OilCpmhJDWLFZBYwW2mwaVtplhyS4bKLIkRlWmMRwqqmsxVNjGK/cP3kf2z98/17
+uf4p+E/vIjJpgkuhofyFI03JYOY/vG5yKcHwREdyqqqqqqqkkkklktLaW0tpYlpEmk0mkkk
kk+ybnJJJJJJJJJJaSSSRJJJIkkkkkkkkkklpJaWlpaWlpaWkS1UlpaWlpaWkkkkkklkiSSS
SSSSTm5ySSSSSSTm5yRJIkkkkkkkkkk5rqkskklkkiW2bem5nNR/gHRFkOaIucjqw5MJSpZ/
RMoOoZOURudh/hjLolLZyRl/qzB4SS4NCjAoppKVijqLOizZldSl12QsUdFEtzsiixchyG40
ZH+vP8FppSVEkbHIo5ndD/0pQ4F3ZSkqekWPNHUweZRzJNGSSl0S7oyYN4iMlkkrHdSiikWH
Vu2bKLKUs0Ox4Ui7ZSVLLCkShHd5CVOqUpHI3ckt0XMtEqdUrktyTYkooo/tEnBhGDouR2Ac
FGCUZMFEeZ0dVnddJRHsR/oGJh1tINJzIdbG91ohUHTgfelVL4RSHxiz6FMScnpeE+IeQdZS
lKUpSlOqecSe5DZ4kqpJJJJJJPpbNzkkkkkkkkkkkkkkkkn64b6jPW354aB/Kh+ZDb2ttsFJ
/kV0WR+yxgn9VI5jlJDqQzPTNoPqMdvrkkkkkkk8yj5AZDrF0iw3XnELlBSNjEKtIRPBH5jA
pf5ljTSVcq2/p+/yMsktXeO6L+ZAxACED5XAWxqu7p2LIqc8AtpQwDIfnfs5FVDztnxK226K
TCoT+0seuIac229y225Nm/Sp4nvo5YZFtJsskiqRMUclEmVJPf+7/g+TqcKSQgDVAxzoGxA7
Dnc1mWlHJx5t3zz4KrML641QT7OtjVNstOKtMflf5GeNu3tu9zq/41Psh/OQj7g+aIdduOO/
JCCeff9CPT8z9/ktttWVbfkXF3eT8Y/eHJXGMiq40uI/3bbY8mMNnRWjZpqOSqPGKbOk4OTN
EOnKDfEM0TEdKKqq00zUuj1th0V1VWMZFq8NCniOpyMRubaoUcYgcQh1YR7Y09ywDwFXMax6
BTxmiRxuR7B+UIyTNEbaam7dPCTSLHKEWVB9hViSvmiSvB+iYSexPBUmHMqdY7SyTSjRPynp
+t1kSWqmgsLHgfG2DEQEXwiIIBy4m5BRCy4AdEh5zFX9k70cRH27IRzVPBThSQfGxiPV9Wza
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
j7R6dbOCuipXHt+L4F/W82OT1K869JizJHomhTWxWK4w2eTdpxtW5pWRpphMY4ySt2NLsjYr
hdNoxVVG6ViaM01itFKYXD2KZyYmWOSzuV4q+xQ5ubhodCKmz+WhjTdJOyS6fQycQj+aw+iS
VSo/RVDq5rJ3JUNEdW7TUd0JJ0ZJ2kWWEgnNj5VPWrkiuG5WmKk009rbm+stmb7vx8GSSTSJ
tiKoj8r4idD0pXVioYqErhkZw9PDxOSHdpznE5yLSQjnpzPG8bjicTx48YSNppKsQqiLCawV
XOSOrdozGClIphWDv0sZGybnJiST0TebN2CbqipyT4FZJMbp74Rs2WcJUxGk0yaNJNohQKSN
DRskSL3ke5bPNexPDQpGGit5wqEmkcFZDQrqmxpgZMYSjY8xQw0myRqEPsqRg2SpzacP8pg3
QqSd8ZjEnZVcl0eCtSbsm6TIqPSsImyq4JFb7vafOqVSnwN4STZLEjuPDBJ4zTdzh5yT4ERi
T+XJXkqd5OqMg+AoVBUcoFkidCp7iyFbu9sTHij7QeKE0/tuH5CqRUhLEiyxYck9YkiRZtbG
28solpMPYZNPXJbYztt2xnyVntirWUqmp1a9BZJHNVYqqweLaQ0KkqypFskWUoqJk+N7xNHD
riKFSP1PiSYHvOS1+hh7H3d/n0xyCexlb7/Tt7UpPdXkrs7PQ519dQha65qNfC12lkhW1ZIt
WsJNLeH5ZPX6LtjMSvS0aLKNODTURso0aezCb2vUXsvZ91lRGpRcwUuiyyyVKJ856HPRPSSM
tnie9IRZGqlVMSSnNXgkriUx4tNDklckMFJMznENmNmzKmhkqtKlaVkqzSo0ppVY0xXwPusY
2N83bRFzgsw4XXSLRCS8mmUqYJ2Iu4ajibq02RtZEFYslbG0SOThi6WESu2XXUppipXJTCkr
LRGaUSsi5KUljTRKmLiwm4wwIs3mouGrE0sJODHNWjfdk/uOcI02btxosTCZawx0WNtjZRuw
qpWzGMY0aU5msKmxzjiYrZwwoUmloVhDdIUvdRUIwusuoUrdZJu0xK5MmCVvXGmNK0MY3Uhp
mMiqm5jTisQVYjhSmxMEJSFAwETg1MphMmYuVKYUZhLJcTDAKDMNGjSRKUyShoYzGhW7YuE0
UolaYbKmGGCYqJoqVTjMNmNmho0dJpjUYbVNLJwVOW0bE0yZa3xs06cMTZTmpixOGMnDUhKb
ps2TUqjFViqbOUoxpVVsm5tvJDdJNxUiVUmzBpTaN8aFile5DQqkjRtwbNmMfOqlUqcNCuaZ
KGyVq45pqSTvhVKmx/PQp1aeBuiMcmyRiTzd2OSuH80Rg7bGJGhFkTmrsqdFYo3bKyTTiIYU
2ydFxRurFSqrDEbqmixipiTsPcsc90vT09xEm5ucGNxwjUTZDRUUqkqpIbmbqVI59FNG7TRK
pKmqm7ZjZFhXMKSbnVJNQGE5rImDoTyxI2czo00/kojk0SlCqUqik+Vj65pjExVVV06Mg0jS
sWbco8JkU5yd6tJUxUlTWmFaaY0rUkrCtCqRiGMhKmkSXvOSxE9yg8pukw5OyfMNlQVQTEx1
PUWSRkincdjJdSslKqtKrCJDMXExMVwiqcLIiN2kpIVHqYmzSYmlbI2JBwSCJux7Tk5NkhLY
eIzS2bJCI0kttns1vHhzk9Lbbbz07ekOTkx9fDHLbexMjTSiWN1li4WJW8kbtGzxYY0YTcRU
cImyVaGMnCaTZWaRRJzKRUagQyRWzdW82GIVqSaRiRUaNba0taDZdmjY0yIq71IjIlNHvp2Y
5JNyzTk7ZnHOPSbrxOnOcb2OckqlUKqK7SO2I8VMUm6a01LWmySeIOiyQ5Z5I1FSTeREU4Dd
uxVVySfG5z4oqR6lT42MSqRLJ+RcbT6zifoe48XnmY9LD3T3aKj5KaSwstKbPoY75PQqQ8Hp
kHyTg8T6qxjm02EWJaTbTLZMm2gWTIkGiNrYkmNpDQttIjIk5WKkqxIxUDFQN3lEjNzGE9ib
May 02 2004
next sibling parent Ben Hinkle <bhinkle4 juno.com> writes:
On Sun, 02 May 2004 21:41:09 -0400, Mike Swieton <mike swieton.net>
wrote:

I feel dumb. Here's the file that was supposed to be attached to the other ;)
lol - and I feel dumb for posting my reply asking where the code is before getting any new messages... oh well!
Mike Swieton
__
If all the human race's collected information could be made available to
anyone, anywhere, at any time, for marginal cost, would it be moral to
restrict access to that informtion?
	- Eben Moglen
May 02 2004
prev sibling parent reply "Ben Hinkle" <bhinkle4 juno.com> writes:
Hmm. now that I try the attachment it seems truncated. I can't open it. Can
you?

"Mike Swieton" <mike swieton.net> wrote in message
news:pan.2004.05.03.01.41.09.6279 swieton.net...
 I feel dumb. Here's the file that was supposed to be attached to the other
;)
 Mike Swieton
 __
 If all the human race's collected information could be made available to
 anyone, anywhere, at any time, for marginal cost, would it be moral to
 restrict access to that informtion?
 - Eben Moglen
May 03 2004
parent reply Mike Swieton <mike swieton.net> writes:
On Mon, 03 May 2004 13:45:29 -0400, Ben Hinkle wrote:

 Hmm. now that I try the attachment it seems truncated. I can't open it. Can
 you?
I've posted an updated version (this one doesn't segfault) at http://www.csis.gvsu.edu/~swietonm/concurrent.tar.bz2. I am certain that this one is good as of right now. I'm still getting used to some of the interesting D-isms ;) My decision to change the Channel interface to be a templated collection is going to necessitate some changes, so I'll hold off on too much further development until people decide whether it's a good idea or not. Has anyone else started work on this? Would a mailing list be helpful? By the way, has anyone considered a name for the project other than "That concurrency library for java that Doug Lea wrote"? Are we just calling it Concurrent? libConcurrent? Doug Lea's Lovechild? 8-} Mike Swieton __ We owe most of what we know to about one hundred men. We owe most of what we have suffered to another hundred or so. - R. W. Dickson
May 03 2004
next sibling parent Ben Hinkle <bhinkle4 juno.com> writes:
 Has anyone else started work on this? Would a mailing list be helpful?
The forums at dsource are probably the best place to have discussions about it.
 By the way, has anyone considered a name for the project other than "That
 concurrency library for java that Doug Lea wrote"? Are we just calling it
 Concurrent? libConcurrent? Doug Lea's Lovechild? 8-}
The project at dsource is just "Concurrent" and the modules are "concurrent.all", "concurrent.mutex", etc. One nice thing about "Doug Lea's Lovechild" is that it abbreviates to DLL ;-)
 Mike Swieton
 __
 We owe most of what we know to about one hundred men. We owe most of what
 we have suffered to another hundred or so.
 - R. W. Dickson
May 03 2004
prev sibling parent "Walter" <newshound digitalmars.com> writes:
"Mike Swieton" <mike swieton.net> wrote in message
news:pan.2004.05.04.02.34.38.221062 swieton.net...
 By the way, has anyone considered a name for the project other than "That
 concurrency library for java that Doug Lea wrote"? Are we just calling it
 Concurrent? libConcurrent? Doug Lea's Lovechild? 8-}
Why not ask Doug?
May 25 2004
prev sibling parent Ben Hinkle <bhinkle4 juno.com> writes:
On Sun, 02 May 2004 21:29:03 -0400, Mike Swieton <mike swieton.net>
wrote:

On Sun, 02 May 2004 15:55:58 -0400, Ben Hinkle wrote:

 I've started a project on www.dsource.org for porting Doug Lea's
 "concurrent" package. The download section has a zip file with the
 code or you can get it from the svn repository. The doc (converted
 from the orginal Javadoc and generated using doxygen) is at
 http://home.comcast.net/~benhinkle/concurrent-doc/
 
 Anyhow, I'm looking for either anyone interested in helping out or any
 pointers to test suites for synchronization and threading. So far I've
 done the basic Sync and Barrier classes and implemented a Java-style
 wait/notify struct. There's just one file that knows about D
 synchronization internals and has platform-specific code in it.
 
 -Ben
Cool ;) I was actually just minutes from doing just that myself, heh. I continued doing some more on some of the Executor classes (easy), and started the LinkedQueue class. I made Channel and friends templates, and changed their APIs accordingly. Some input on these changes would be appreciated.
sounds good - where are the changes? I'm using the same public domain license as the original since 90% of the code is unchanged.
Matthew: what can we expect from the DTL as far as things like thread-safe
collections are concerned? I'm not sure what I'm really asking here; I'm just
wondering how/when the DTL will affect porting Doug's library.

Currently, it segfaults, and I don't know why. I have to go do other stuff
today, and I'll look at it again tomorrow. Right now I am primarily interested
in feedback on the API changes and such that I've made.

I have not updated much of the documentation that was copied in, and I am not
sure where the InteruptedException fits in yet, as no D analog appears to
exist yet. 
Instead of using InterruptedException I made wait() throw a new class called WaitException when it fails. I figured that name was more accurate than keeping the InterruptedException since you can't interrupt in D. Also I took out any code that was interrupting threads since the exception gets rethrown.
 And no Windows or multi-processor testing has been done whatsoever.
I don't have access to either. The latter will probably be a PITA down the
line, though...
I've been doing some Windows testing but my machine is single processor. I would like to also get the Fork/Join lightweight task classes going and those would definitely need multi-processor testing. Anyone have, ohh, say, a 30 CPU box lying around unused? :-)
Mike Swieton
__
Our earth is degenerate in these latter days. Bribery and corruption are
common. Children no longer obey their parents. Every man wants to write a
book... The end of the world is evidently approaching. 
	- On a stone slab carved in 2800 B.C. in Assyria
May 02 2004