Dois threads de nível de usuário do mesmo processo podem ser executados simultaneamente na CPU multicore?

0

Dois threads de nível de usuário do mesmo processo podem ser executados simultaneamente na CPU multi-core?

JOBBINE JOSEPH
fonte
Sim, claro que pode.
Ramhound

Respostas:

1

Normalmente: sim.

Supondo que eles não bloqueiem em um recurso compartilhado.
Por exemplo, bloqueie o acesso a um único joystick ou tente bloquear um arquivo compartilhado, ...



Um arquivo compartilhado pode ser mais comum que o esperado. Por exemplo, bloquear um arquivo .ini ou usar um arquivo temporário sem usar um nome aleatório apropriado.

Hennes
fonte
e se eles forem segmentos cooperativos e ambos solicitarem um recurso ao mesmo tempo?
JOBBINE JOSEPH 5/13
É para isso que servem os semáforos . Apenas um passo obterá o recurso, o outro bloqueará até que o primeiro passo o libere.
Hennes
sim, mas tenho algumas dúvidas 1) O que acontece se você bloquear um thread, ou seja, significa que se uma operação inoperante for malsucedida, esse thread sozinho passará ao estado de bloqueio ou todo o processo também passará ao estado de bloqueio? 2) a segunda coisa é que ele possui vários núcleos, e se ambos fizerem uma operação inativa simultaneamente em um mesmo semáforo (ignore essa dúvida se achar muito tolo).
JOBBINE JOSEPH
Várias operações ao mesmo tempo é uma pergunta válida. Foi um grande problema no passado e é por isso que desenvolvemos mutexes e semáforos. Mesmo com isso, precisávamos recorrer a truques, caso dois processos tentassem reivindicar um recurso exatamente ao mesmo tempo. Hoje em dia, a maioria das CPUs possui algumas instruções que são garantidas como atômicas. (Por exemplo, as instruções de teste e configuração ). O modo como a CPU lida com isso quando dois núcleos tentam isso exatamente ao mesmo tempo é algo que você pode precisar perguntar ao designer da CPU.
Hennes
Pode ser algo tão simples quanto atribuir à CPU a menor prioridade de número de núcleo, mas isso é um palpite e pode variar por CPU. Quanto ao bloqueio de processos vs passos. Eu acho que é seguro ler isso como 'bloquear o thread' em vez de bloquear o processo. Os processos multiencadeados parecem ser relativamente novos (não na elaboração, mas no uso real) e acho seguro que o escritor tenha usado apenas “processo” em vez de “processo único de encadeamento ou passo específico”.
Hennes