Mutex error?

nice ncellier at ifrance.com
Sun Feb 18 19:17:23 UTC 2007


Hello Ron,
Squeak does not have true closure by default (optional package exists)
i is a temporary variable local in the context of definition of Blocks 
(here UndefinedObject>>DoIt)

And a single temporary is allocated...

You should try this:

semaphore := Mutex new.
[1 to: 100 do: [:i | semaphore critical:[ Transcript cr; show: i]]] fork.
[101 to: 200 do: [:j | semaphore critical:[ Transcript cr; show: j]]] fork.


Nicolas


Ron Teitelbaum a écrit :
> Hi All,
> 
> Can anyone explain this behavior?  
> 
> Image 3.9 [7051]  Win32  XP
> 
> semaphore := Mutex new.
> [1 to: 100 do: [:i | semaphore critical:[ Transcript cr; show: i]]] fork.
> [101 to: 200 do: [:i | semaphore critical:[ Transcript cr; show: i]]] fork.
> 
> Results in:
> 
> 1
> 102
> 103
> 104
> 105
> 106
> 107
> 108
> 109
> 110
> 111
> 112
> 113
> 114
> 115
> 116
> 117
> 118
> 119
> 120
> 121
> 122
> 123
> 124
> 125
> 126
> 127
> 128
> 129
> 130
> 131
> 132
> 133
> 134
> 135
> 136
> 137
> 138
> 139
> 140
> 141
> 142
> 143
> 144
> 145
> 146
> 147
> 148
> 149
> 150
> 151
> 152
> 153
> 154
> 155
> 156
> 157
> 158
> 159
> 160
> 161
> 162
> 163
> 164
> 165
> 166
> 167
> 168
> 169
> 170
> 171
> 172
> 173
> 174
> 175
> 176
> 177
> 178
> 179
> 180
> 181
> 182
> 183
> 184
> 185
> 186
> 187
> 188
> 189
> 190
> 191
> 192
> 193
> 194
> 195
> 196
> 197
> 198
> 199
> 200
> 
> Any ideas why?  
> I have also tried semaphore := Semaphore forMutualExclusion.  But get
> similar results.
> 
> Thanks,
> 
> Ron Teitelbaum
> 
> 
> 
> 




More information about the Squeak-dev mailing list