Fórum Prioridade de execução de threads!! #232119
13/05/2004
0
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
Curtir tópico
+ 0Posts
13/05/2004
Sgubert
Gostei + 0
13/05/2004
Sgubert
Preciso muito de uma ajuda :(
Gostei + 0
14/05/2004
Sgubert
Gostei + 0
14/05/2004
Nildo
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
Gostei + 0
14/05/2004
Sgubert
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
Gostei + 0
14/05/2004
Nildo
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
Gostei + 0
14/05/2004
Sgubert
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
Gostei + 0
14/05/2004
Nildo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)