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

Re: What's cooking in git.git (Sep 2016, #08; Tue, 27)

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 3, 2016, 20:49 UTC
Message-ID
<xmqqwphp5f9q.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<CAGZ79ka8dO1AHJftKAqD6LvxJSP+8yGGa7Citcdxxrnc5DMeYg@mail.gmail.com>
Stefan Beller <sbeller@google.com> writes:
> I am looking at the tip of jc/attr-more and for a minimum
> thread safety we'd want to change the call sites to be aware of the
> threads, i.e. instead of doing
>
      static struct git_attr_check *check;	
Show 12 quoted lines
>     if (!check)
>         check = git_attr_check_initl("crlf", "ident",
>                     "filter", "eol", "text",
>                     NULL);
>
> We'd rather call
>
>         struct git_attr_check *check;
>         check = git_attr_check_lookup_or_initl_threadsafe(
>                 "crlf", "ident", "filter", "eol", "text", NULL);
>          if (!git_check_attr(path, check)) {
>              ...

I actually am hoping that the "static" can be kept so that we can minimize the cost of interning these symbols into struct git_attr.

The initialization would thus become something like:
	static struct git_attr_check *check;
	git_attr_check_initl(&check, "crlf", "ident", ..., NULL);

The structure will have an array of git_attr[], once interned will be shared and used by everybody. _initl() will need to make sure that the "check" pointer is updated atomically so that multiple people racing to initialize this variable will not step on each others' toes.

Then the use site would do something like
	const char *result[... some size ...];
	git_check_attr(path, check, result[]);

to receive result regardless of anybody else who is using the same "check" structure to ask the same question (for different paths).

Previous: Junio C HamanoNext: Stefan Beller
Message 6 of 11 in “What's cooking in git.git (Sep 2016, #08; Tue, 27)”
  1. Junio C HamanoSep 27, 2016
  2. Stefan BellerOct 1, 2016
  3. Junio C HamanoOct 3, 2016
  4. Stefan BellerOct 3, 2016
  5. Junio C HamanoOct 3, 2016
  6. Junio C HamanoOct 3, 2016
  7. Stefan BellerOct 3, 2016
  8. Junio C HamanoOct 3, 2016
  9. Stefan BellerOct 3, 2016
  10. Junio C HamanoOct 4, 2016
  11. Stefan BellerOct 4, 2016

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.