@@ -160,9 +160,7 @@ A low-level API which returns the backing `AbstractChannel` for an `id` returned
160160The call is valid only on the node where the backing channel exists.
161161"""
162162function channel_from_id (id)
163- rv = lock (CTX[]. client_refs) do
164- return get (CTX[]. pgrp. refs, id, false )
165- end
163+ rv = @lock CTX[]. client_refs get (CTX[]. pgrp. refs, id, false )
166164 if rv === false
167165 throw (ErrorException (" Local instance of remote reference not found" ))
168166 end
@@ -171,16 +169,18 @@ end
171169
172170lookup_ref (rrid:: RRID , f= def_rv_channel) = lookup_ref (CTX[]. pgrp, rrid, f)
173171function lookup_ref (pg, rrid, f)
174- return lock ( CTX[]. client_refs) do
172+ rv = @ lock CTX[]. client_refs begin
175173 rv = get (pg. refs, rrid, false )
176174 if rv === false
177175 # first we've heard of this ref
178176 rv = RemoteValue (invokelatest (f))
179177 pg. refs[rrid] = rv
180178 push! (rv. clientset, rrid. whence)
181179 end
182- return rv
180+ rv
183181 end :: RemoteValue
182+
183+ return rv
184184end
185185
186186"""
@@ -232,9 +232,7 @@ del_client(rr::AbstractRemoteRef) = del_client(remoteref_id(rr), myid())
232232
233233del_client (id, client) = del_client (CTX[]. pgrp, id, client)
234234function del_client (pg, id, client)
235- lock (CTX[]. client_refs) do
236- _del_client (pg, id, client)
237- end
235+ @lock CTX[]. client_refs _del_client (pg, id, client)
238236 nothing
239237end
240238
@@ -297,13 +295,11 @@ function send_del_client_no_lock(rr)
297295end
298296
299297function publish_del_msg! (w:: Worker , msg)
300- lock ( w. msg_lock) do
298+ @ lock w. msg_lock begin
301299 push! (w. del_msgs, msg)
302300 @atomic w. gcflag = true
303301 end
304- lock (CTX[]. any_gc_flag) do
305- notify (CTX[]. any_gc_flag)
306- end
302+ @lock CTX[]. any_gc_flag notify (CTX[]. any_gc_flag)
307303end
308304
309305function process_worker (rr)
@@ -320,7 +316,7 @@ function process_worker(rr)
320316end
321317
322318function add_client (id, client)
323- lock ( CTX[]. client_refs) do
319+ @ lock CTX[]. client_refs begin
324320 rv = lookup_ref (id)
325321 push! (rv. clientset, client)
326322 end
@@ -341,13 +337,11 @@ function send_add_client(rr::AbstractRemoteRef, i)
341337 # to the processor that owns the remote ref. it will add_client
342338 # itself inside deserialize().
343339 w = worker_from_id (rr. where)
344- lock ( w. msg_lock) do
340+ @ lock w. msg_lock begin
345341 push! (w. add_msgs, (remoteref_id (rr), i))
346342 @atomic w. gcflag = true
347343 end
348- lock (CTX[]. any_gc_flag) do
349- notify (CTX[]. any_gc_flag)
350- end
344+ @lock CTX[]. any_gc_flag notify (CTX[]. any_gc_flag)
351345 end
352346end
353347
@@ -448,9 +442,7 @@ function remotecall_fetch(f, w::Worker, args...; kwargs...)
448442 rv. waitingfor = w. id
449443 send_msg (w, MsgHeader (RRID (0 ,0 ), oid), CallMsg {:call_fetch} (f, args, kwargs))
450444 v = take! (rv)
451- lock (CTX[]. client_refs) do
452- delete! (CTX[]. pgrp. refs, oid)
453- end
445+ @lock CTX[]. client_refs delete! (CTX[]. pgrp. refs, oid)
454446 return isa (v, RemoteException) ? throw (v) : v
455447end
456448
@@ -490,9 +482,7 @@ function remotecall_wait(f, w::Worker, args...; kwargs...)
490482 rr = Future (w)
491483 send_msg (w, MsgHeader (remoteref_id (rr), prid), CallWaitMsg (f, args, kwargs))
492484 v = fetch (rv. c)
493- lock (CTX[]. client_refs) do
494- delete! (CTX[]. pgrp. refs, prid)
495- end
485+ @lock CTX[]. client_refs delete! (CTX[]. pgrp. refs, prid)
496486 isa (v, RemoteException) && throw (v)
497487 return rr
498488end
0 commit comments