Is client.Mutex still needed? #11

Closed
opened 2024-10-29 22:46:45 +00:00 by smark · 2 comments
Owner
// Sends a message to the websocket.
// Automatically locks and unlocks the client mutex, to ensure that only one goroutine can write at a time.
func (c *Client) SendMessage(messageType int, data []byte) error {
	c.Mutex.Lock()
	defer c.Mutex.Unlock()

Kann es immer noch vorkommen, dass mehr als eine goroutine eine Client-Message versenden will?

``` // Sends a message to the websocket. // Automatically locks and unlocks the client mutex, to ensure that only one goroutine can write at a time. func (c *Client) SendMessage(messageType int, data []byte) error { c.Mutex.Lock() defer c.Mutex.Unlock() ``` Kann es immer noch vorkommen, dass mehr als eine goroutine eine Client-Message versenden will?
Author
Owner

Momentan wird die Funktion nur im Broadcast aufgerufen:

		for _, client := range Clients {
			err := client.SendMessage(websocket.TextMessage, jsonMessage)
			if err != nil {
				log.Error("Error broadcasting to client:", "msg", err)
				// The client is responsible for closing itself on error
			}
		}

Das passiert iterativ pro Client und es kann keinen parallelen Zugriff auf den Websocket (mehr) geben.

Daher sollte der Mutex entfernt werden können.

Momentan wird die Funktion nur im Broadcast aufgerufen: ``` for _, client := range Clients { err := client.SendMessage(websocket.TextMessage, jsonMessage) if err != nil { log.Error("Error broadcasting to client:", "msg", err) // The client is responsible for closing itself on error } } ``` Das passiert iterativ pro Client und es kann keinen parallelen Zugriff auf den Websocket (mehr) geben. Daher sollte der Mutex entfernt werden können.
Author
Owner

closed by bdfd5c3

closed by bdfd5c3
smark closed this issue 2024-10-30 07:11:14 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: pomodoro/GoTomato#11
No description provided.