git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/2] pack-objects: fix threaded load balancing

From
Johannes Sixt <j.sixt@viscovery.net>
Date
Dec 11, 2007, 17:02 UTC
Message-ID
<475EC2AB.60702@viscovery.net>
In-Reply-To
<alpine.LFD.0.99999.0712080000120.555@xanadu.home>
Nicolas Pitre schrieb:
Show 13 quoted lines
> @@ -1612,10 +1620,10 @@ static void *threaded_find_deltas(void *arg)
>  		pthread_mutex_lock(&data_ready);
>  		pthread_mutex_unlock(&data_request);
>  
> -		if (!me->list_size)
> +		if (!me->remaining)
>  			return NULL;
>  
> -		find_deltas(me->list, me->list_size,
> +		find_deltas(me->list, &me->remaining,
>  			    me->window, me->depth, me->processed);
>  	}
>  }

This hunk caught my attention. &data_ready is locked, but not released in this function.

Looking more closely at the code surrounding this hunk, it seems that the lock is released in a *different* thread than the one that locked it. This works on Linux, but is not portable. We will have to use condition variables like every one else does in a producer-consumer-like scenario.

-- Hannes
Previous: Nicolas PitreNext: Nicolas Pitre
Message 14 of 16 in “pack-objects: fix threaded load balancing”
  1. 2/2 pack-objects: fix threaded load balancingNicolas Pitre, Dec 8, 2007
  2. Jeff KingDec 8, 2007
  3. Jon SmirlDec 10, 2007
  4. Jon SmirlDec 10, 2007
  5. Jon SmirlDec 10, 2007
  6. Jon SmirlDec 10, 2007
  7. Jon SmirlDec 10, 2007
  8. Jon SmirlDec 10, 2007
  9. Nicolas PitreDec 10, 2007
  10. Nicolas PitreDec 10, 2007
  11. Jon SmirlDec 10, 2007
  12. Nicolas PitreDec 10, 2007
  13. pack-objects: more threaded load balancing fix with often changed pathsNicolas Pitre, Dec 10, 2007
  14. Johannes SixtDec 11, 2007
  15. Nicolas PitreDec 11, 2007
  16. Johannes SixtDec 13, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.