GARANTIR DESCONTO

Fórum Prioridade de execução de threads!! #232119

13/05/2004

0

Olá pessoal!!!

Preciso executar 10 threads simultaneamente e preciso estipular a prioridade de execução delas. Por exemplo, pego um numero aleatorio entre 0 e 100´, se ele for par a thread executa antes que aquelas que encontraram um numero impar. Preciso definir essa prioridade quando a thread já estiver executando, tipo começa a execução e atrinbui uma prioridade para si mesma, dai se existir uma outra thread com prioridade maior esperando pelo procesador ela que irá executar.
Vcs saberiam me dizer s isto é possível?? E como fazer isto???
Caso não tenha sido claro, me falem, ok?

Agradeço de antemão a todos

Abraços
Samuel Gubert


Sgubert

Sgubert

Responder

Posts

13/05/2004

Sgubert

SOBE


Responder

Gostei + 0

13/05/2004

Sgubert

Ninguém teria ideia se isso é possível ou não????

Preciso muito de uma ajuda :(


Responder

Gostei + 0

14/05/2004

Sgubert

SOBE


Responder

Gostei + 0

14/05/2004

Nildo

Você pode usar a própria propriedade TAG da Thread para determinar seu número: 1..100 para poder verificar se a mesma é Par ou Impar (Vai ser par quando: ´TAG mod 2 = 0´)
Quando ela já estiver executando ou ainda não foi executada, é só você atribuir a propriedade dela chamada PRIORITY. Ela aceita valores do tipo TThreadPriotity. Olhe o que o Help do delphi tem a dizer:

tpIdle          The thread executes only when the system is idle. The system will not interrupt other threads to execute a thread with tpIdle priority.
tpLowest        The thread´s priority is two points below normal.
tpLower         The thread´s priority is one point below normal.
tpNormalThe thread has normal priority.
tpHigherThe thread´s priority is one point above normal.
tpHighestThe thread´s priority is two points above normal.
tpTimeCriticalThe thread gets highest priority.


Espero ter te ajudado


Responder

Gostei + 0

14/05/2004

Sgubert

Olá nildo!

Ajudou sim, mas de repente vc poderia ser mais claro com relação a esse tipo TThreadPriotity. Não faço ideia de como funciona, estou bem perdido. E outra dúvida, se por acaso eu tiver uma thread com prioridade alta executando, dai ela perde o processador, meu programa cria uma nova thread e começa a executa-la e ela se atribui uma prioridade normal. Nesse momento será verificado se existe outra thread de mais lata prioridade ou isso só será feito quando a thread em execução perder o processador...???
Qui duvida complicada não émesmo??? rsrsrs :(

Espero que me ajude novamente e obrigado pelas dicas ate agora...

[]´s
Samuel Gubert


Responder

Gostei + 0

14/05/2004

Nildo

O esquema de prioridade é gerenciado pelo próprio Windows. Mais ou menos assim:

Quando o ThreadPriority = tpIdle, a Thread só será executada quando nenhuma outra Thread estiver fazendo alguma tarefa pesada. Já com o tpTimeCritical, a Thread recebe tratamento de chefe do Processador, sua thread começa a ser executada naquele momento, deixando todas as outras threads mais lentas, consequentimente parando as que forem tpIdle. Então tudo é relativo, uma coisa é ligada com a outra. Se uma recebe prioridade, uma delas tem que deixar de ter. Entendeu? Mas isso é trabalho do processador


Responder

Gostei + 0

14/05/2004

Sgubert

Ok nildo, ate ai tudu bem!!

Mas a grande dúvida é a seguinte. Se eu tiver 4 threads com prioridade alta e 6 com prioridade normal. Eu tenho a garantia de que as com maior prioridade serão executadas primeiro ou somente tenho a garantia delas utilizarem mais tempo o processador. Preciso garantir que determindas threads sejam executadas primeiro, por isso estou pesquisando sobre prioridade.

Agradeço toda ajuda ate agora
[]´s
Samuel


Responder

Gostei + 0

14/05/2004

Nildo

Somente em relação ao processamento. Quem vai executar primeiro ou depois, é seu programa quem define. Você vai ter que programar isso :(


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar