seção crítica para linux

2

No linux ou em uma biblioteca para linux, existe um equivalente à seção crítica no win32?

Estou ciente do Mutex, mas não é o mesmo que seção crítica, pois uma seção crítica usa o spinlock do modo de usuário e um objeto de evento internamente, e deve ser mais rápido que o mutex.

    
por Hyunjik Bae 16.01.2012 / 10:20

2 respostas

3

Se você quer algo vindo do espaço do kernel, então você pode querer olhar para semáforos ( sem_overview(7) ). Você pode construir construções de nível superior a partir de um semáforo, como "evento", "condição", "mutex" ("seções críticas"). Existem as interfaces mais antigas e mais novas em C. Algumas linguagens de nível superior, como Python e Perl, também expõem a interface.

O "Mutex" do qual você provavelmente está falando é o mutex do pthread, que será mais rápido do que qualquer coisa no espaço do usuário, especialmente um usando um spinlock (que foi projetado para nível de SO extremamente baixo constructos). Algumas implementações de pthread podem usar um nível de SO semaphore ou podem usar outras construções.

    
por 16.01.2012 / 14:36
1

No Linux, o mutex POSIX é implementado por um recurso de kernel em destaque chamado futex (2), que faz parte do NPTL. Isso significa que seu encadeamento intercepta apenas o espaço do kernel quando ele precisa ser suspenso, ou apenas uma simples função de espaço do usuário.

O Spin-lock é tão simples que não precisa envolver o kernel, você pode facilmente construí-lo apenas por algo como __sync_bool_compare_and_swap (). A Glibc implementou o spin lock da causa - man pthread_spin_init -, mas o spin lock nem sempre é "rápido" como sua imaginação.

    
por 27.08.2013 / 09:49

Tags