Articles of synchronization

Exemplo de Mutex / tutorial?

Eu sou novo em multithreading e estava tentando entender como os mutexes funcionam. Fiz muita pesquisa no Google e encontrei um tutorial decente , mas ainda deixei algumas dúvidas sobre como funciona porque criei meu próprio programa em que o bloqueio não funcionava. Uma syntax absolutamente não intuitiva do mutex é pthread_mutex_lock( &mutex1 ); , […]

Como sincronizar uma variável estática entre segmentos executando diferentes instâncias de uma class em Java?

Eu sei que usando a palavra synchronize chave synchronize antes de um método traz a synchronization para esse object. Ou seja, 2 threads executando a mesma instância do object serão sincronizados. No entanto, como a synchronization está no nível do object, dois encadeamentos que executam instâncias diferentes do object não serão sincronizados. Se tivermos uma […]

Sincronização vs Bloqueio

java.util.concurrent API java.util.concurrent fornece uma class chamada Lock , que basicamente serializaria o controle para acessar o recurso crítico. Dá método como park() e unpark() . Podemos fazer coisas semelhantes se pudermos usar palavras synchronized chave synchronized e usando os methods wait() e notify() notifyAll() . Eu estou querendo saber qual destes é melhor na […]

Como o bloqueio funciona exatamente?

Eu vejo que, para usar objects que não são thread-safe, envolvemos o código com um bloqueio como este: private static readonly Object obj = new Object(); lock (obj) { // thread unsafe code } Então, o que acontece quando vários segmentos acessam o mesmo código (vamos supor que ele esteja sendo executado em um aplicativo […]

Qual é a diferença entre atômica / volátil / sincronizada?

Como o trabalho atômico / volátil / sincronizado funciona internamente? Qual é a diferença entre os seguintes blocos de código? Código 1 private int counter; public int getNextUniqueIndex() { return counter++; } Código 2 private AtomicInteger counter; public int getNextUniqueIndex() { return counter.getAndIncrement(); } Código 3 private volatile int counter; public int getNextUniqueIndex() { return […]

Sincronização e System.out.println

Se vários segmentos chamarem System.out.println (String) sem synchronization, a saída poderá ficar intercalada? A API não faz menção à synchronization, então isso parece possível ou a saída intercalada é impedida pelo buffering e / ou o modelo de memory da VM, etc.? EDITAR: Por exemplo, se cada encadeamento contiver: System.out.println(“ABC”); é a saída garantida como: […]

C ++ 0x não tem semáforos? Como sincronizar threads?

É verdade que o C ++ 0x virá sem semáforos? Já existem algumas questões sobre o Stack Overflow em relação ao uso de semáforos. Eu os uso (semáforos posix) o tempo todo para deixar um thread esperar por algum evento em outro thread: void thread0(…) { doSomething0(); event1.wait(); … } void thread1(…) { doSomething1(); event1.post(); […]

Loop não vê valor alterado sem um comando print

No meu código eu tenho um loop que aguarda algum estado a ser alterado de um segmento diferente. O outro segmento funciona, mas meu loop nunca vê o valor alterado. Espera para sempre. No entanto, quando eu coloco uma instrução System.out.println no loop, de repente funciona! Por quê? O seguinte é um exemplo do meu […]