2
0
Эх сурвалжийг харах

core/sync.select_raw: rename to try_select_raw

This follows the convention where non-blocking operations are prefixed
with "try" to indicate as much.

Since select_raw in it's current form doesn't block, it should be
try_select_raw, and allow select_raw to name a blocking implementation.
Jack Mordaunt 3 сар өмнө
parent
commit
be873af003

+ 7 - 5
core/sync/chan/chan.odin

@@ -1116,12 +1116,14 @@ Select_Status :: enum {
 
 
 
 
 /*
 /*
-Attempts to either send or receive messages on the specified channels.
+Attempts to either send or receive messages on the specified channels without blocking.
 
 
 `select_raw` first identifies which channels have messages ready to be received
 `select_raw` first identifies which channels have messages ready to be received
 and which are available for sending. It then randomly selects one operation
 and which are available for sending. It then randomly selects one operation
 (either a send or receive) to perform.
 (either a send or receive) to perform.
 
 
+If no channels have messages ready, the procedure is a noop.
+
 Note: Each message in `send_msgs` corresponds to the send channel at the same index in `sends`.
 Note: Each message in `send_msgs` corresponds to the send channel at the same index in `sends`.
 
 
 **Inputs**
 **Inputs**
@@ -1154,18 +1156,18 @@ Example:
 		// where the value from the read should be stored
 		// where the value from the read should be stored
 		received_value: int
 		received_value: int
 
 
-		idx, ok := chan.select_raw(receive_chans[:], send_chans[:], msgs[:], &received_value)
+		idx, ok := chan.try_select_raw(receive_chans[:], send_chans[:], msgs[:], &received_value)
 		fmt.println("SELECT:        ", idx, ok)
 		fmt.println("SELECT:        ", idx, ok)
 		fmt.println("RECEIVED VALUE ", received_value)
 		fmt.println("RECEIVED VALUE ", received_value)
 
 
-		idx, ok = chan.select_raw(receive_chans[:], send_chans[:], msgs[:], &received_value)
+		idx, ok = chan.try_select_raw(receive_chans[:], send_chans[:], msgs[:], &received_value)
 		fmt.println("SELECT:        ", idx, ok)
 		fmt.println("SELECT:        ", idx, ok)
 		fmt.println("RECEIVED VALUE ", received_value)
 		fmt.println("RECEIVED VALUE ", received_value)
 
 
 		// closing of a channel also affects the select operation
 		// closing of a channel also affects the select operation
 		chan.close(c)
 		chan.close(c)
 
 
-		idx, ok = chan.select_raw(receive_chans[:], send_chans[:], msgs[:], &received_value)
+		idx, ok = chan.try_select_raw(receive_chans[:], send_chans[:], msgs[:], &received_value)
 		fmt.println("SELECT:        ", idx, ok)
 		fmt.println("SELECT:        ", idx, ok)
 	}
 	}
 
 
@@ -1179,7 +1181,7 @@ Output:
 
 
 */
 */
 @(require_results)
 @(require_results)
-select_raw :: proc "odin" (recvs: []^Raw_Chan, sends: []^Raw_Chan, send_msgs: []rawptr, recv_out: rawptr) -> (select_idx: int, status: Select_Status) #no_bounds_check {
+try_select_raw :: proc "odin" (recvs: []^Raw_Chan, sends: []^Raw_Chan, send_msgs: []rawptr, recv_out: rawptr) -> (select_idx: int, status: Select_Status) #no_bounds_check {
 	Select_Op :: struct {
 	Select_Op :: struct {
 		idx:     int, // local to the slice that was given
 		idx:     int, // local to the slice that was given
 		is_recv: bool,
 		is_recv: bool,