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
|