harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aleksey Shipilev" <aleksey.shipi...@gmail.com>
Subject Re: [general] c help needed
Date Wed, 09 Apr 2008 12:35:45 GMT
IMHO here:

1. Using CAS infers using busy-loop, e.g. "we are trying until
operation succeed". You might tolerate spinning there by using PAUSE
instruction or some other way.
2. How about "static int counter = 0; #define INC() counter++;"? It
will be done in runtime though.

Thanks,
Aleksey.

On Wed, Apr 9, 2008 at 3:57 PM, Alexei Fedotov <alexei.fedotov@gmail.com> wrote:
> Hello folks,
>  Could you please help?
>
>  1. Is it possible to add to a thread safe linked list using CAS
>  without a busy loop?
>
>  void add_site(LogSite* log_site) {
>     LogSite** p_site_head = (LogSite**) &get_logger()->log_site;
>     LogSite* old_value = *p_site_head;
>     do {
>         log_site->next = (LogSite*) old_value;
>         (LogSite*) old_value = (LogSite*) apr_atomic_casptr((volatile
>  void **) p_site_head,
>             (void*) log_site, log_site->next);
>     } while (old_value != log_site->next); // busy loop
>  }
>
>  2. Is it possible to create an auto-increment macro within a
>  compilation unit using C preprocessor?
>
>  #define INC() ...
>
>     INC() // == 1
>     INC() // == 2
>     ...
>
>  Thank you for sharing your expertise.
>  --
>  With best regards,
>  Alexei
>

Mime
View raw message