1 /* go-closed.c -- the builtin closed function.
3 Copyright 2009 The Go Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style
5 license that can be found in the LICENSE file. */
10 /* Return whether a channel is closed. We only return true after at
11 least one nil value has been read from the channel. */
14 __go_builtin_closed (struct __go_channel
*channel
)
19 i
= pthread_mutex_lock (&channel
->lock
);
22 while (channel
->selected_for_receive
)
24 i
= pthread_cond_wait (&channel
->cond
, &channel
->lock
);
28 ret
= channel
->saw_close
;
30 i
= pthread_mutex_unlock (&channel
->lock
);