Ir para conteúdo
Fórum Script Brasil

Pesquisar na Comunidade

Mostrando resultados para as tags ''thread''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • Programação & Desenvolvimento
    • ASP
    • PHP
    • .NET
    • Java
    • C, C++
    • Delphi, Kylix
    • Lógica de Programação
    • Mobile
    • Visual Basic
    • Outras Linguagens de Programação
  • WEB
    • HTML, XHTML, CSS
    • Ajax, JavaScript, XML, DOM
    • Editores
  • Arte & Design
    • Corel Draw
    • Fireworks
    • Flash & ActionScript
    • Photoshop
    • Outros Programas de Arte e Design
  • Sistemas Operacionais
    • Microsoft Windows
    • GNU/Linux
    • Outros Sistemas Operacionais
  • Softwares, Hardwares e Redes
    • Microsoft Office
    • Softwares Livres
    • Outros Softwares
    • Hardware
    • Redes
  • Banco de Dados
    • Access
    • MySQL
    • PostgreSQL
    • SQL Server
    • Demais Bancos
  • Segurança e Malwares
    • Segurança
    • Remoção De Malwares
  • Empregos
    • Vagas Efetivas
    • Vagas para Estágios
    • Oportunidades para Freelances
  • Negócios & Oportunidades
    • Classificados & Serviços
    • Eventos
  • Geral
    • Avaliações de Trabalhos
    • Links
    • Outros Assuntos
    • Entretenimento
  • Script Brasil
    • Novidades e Anúncios Script Brasil
    • Mercado Livre / Mercado Sócios
    • Sugestões e Críticas
    • Apresentações

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Encontrado 14 registros

  1. Estou com um problema durante a execução desse código,baseado na arquitetura cliente servidor do tcp/ip: cliente:https://pastebin.com/7jPsHSub servidor:https://pastebin.com/qH9uRNqR Onde ao executar o segundo cliente (utiliza-se thread) ele sobrepoe palavra sorteada do primeiro cliente... Preciso então alterar os nomes das variaveis durante o programa, para que cada um dos clientes tenha uma variavel "propria" mas não sei como? alguém pode me ajudar???
  2. Olá, estou fazendo um trabalho para implementar um código de força bruta utilizando pthereads no code blocks no Linux, só que na hora de compilar está dando erro: "||error: ld returned 1 exit status|" Alguém pode me dar uma luz do que fazer ? Será que errei algo na implementação ou nas bibliotecas carregadas do open ssl ? Encontrei muito pouca referência para apoio sobre o assunto na internet. Objetivo dado: implementar, usando threads (por exemplo, a biblioteca pthreads), um programa paralelo para tentar quebrar senhas usando a técnica simples de força-bruta (que testar “todas” as possibilidades). Além disso, os resultados de tempo devem ser comparados usando alguma função de captura do tempo de execução, executada possivelmente em uma máquina multiprocessada (2, 4 núcleos). Arquivo original dado: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/md5.h> #include "timer.h" #define MAX 100 #define MIN_ASCII_PRINTBLE 33 #define MAX_ASCII_PRINTBLE 127 // Função que gera strings aleatórias com caracteres printáveis. int gen_random_string(char string[MAX], int s){ int i, num_char; char c; for(i=0; i<s; i++){ // Calcula a quantidade de caracteres num_char = MAX_ASCII_PRINTBLE-MIN_ASCII_PRINTBLE; // Limita o número aleatorio gerado para que fique // entre MIN_ASCII_PRINTBLE e MAX_ASCII_PRINTBLE c = (char)((rand() % num_char) + MIN_ASCII_PRINTBLE); // Monta a string aleatória string[i] = c; } // Colocar o terminador string[s] = 0; } int main(int argc, char* argv[]) { const char password[] = "123"; // Apenas para testes char string[MAX]; // String gerada unsigned char hash1[MD5_DIGEST_LENGTH]; // hash de password unsigned char hash2[MD5_DIGEST_LENGTH]; // hash de string int i, j; int cont = 0; // contador do numero de colisões unsigned long int N; // Número de repetições int tamanhoMinPalavra; // Tamanho mínimo de string a ser testada int tamanhoMaxPalavra; // Tamanho máximo de string a ser testada double tempo_ini, tempo_fim; printf("Entre com o número de repetições: "); scanf("%lu", &N); printf("Entre com o tamanho mínimo da string: "); scanf("%d", &tamanhoMinPalavra); printf("Entre com o tamanho máximo da string: "); scanf("%d", &tamanhoMaxPalavra); // Tempo inicial tempo_ini = GET_TIME(); // Usa o tempo como semente dos números aleatórios srand(time(NULL)); // Gera o MD5 da senha de teste. // O ideal é passar como entrada o hash já gerado. MD5(password, sizeof(password), hash1); // Controle dos tamanhos das strings for (j=tamanhoMinPalavra; j<=tamanhoMaxPalavra; j++){ // Controle das repetições for (i=0; i<N; i++){ // Gera string aleatória gen_random_string(string, j); // Gera o MD5 da string para comparar com o hash da // senha alvo. MD5(string, j+1, hash2); // Compara os hashes if(strcmp(hash1, hash2) == 0){ printf("Achou: %s\n", string); cont++; } } } tempo_fim = GET_TIME(); // Colisões printf("Colisoes: %d (tempo: %f)\n", cont, tempo_fim - tempo_ini); return 0; } Implementação com pthreads que fiz até agora: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/md5.h> #include "timer.h" #include <pthread.h> #define MAX 100 #define MIN_ASCII_PRINTBLE 33 #define MAX_ASCII_PRINTBLE 127 #define NTHREADS 10 int cont = 0; // contador do numero de colisões unsigned long int N; // Número de repetições int tamanhoMinPalavra; // Tamanho mínimo de string a ser testada int tamanhoMaxPalavra; // Tamanho máximo de string a ser testada const char password[] = "123"; // Apenas para testes char string[MAX]; // String gerada unsigned char hash1[MD5_DIGEST_LENGTH]; // hash de password unsigned char hash2[MD5_DIGEST_LENGTH]; // hash de string // Função que gera strings aleatórias com caracteres printáveis. int gen_random_string(char string[MAX], int s){ int i, num_char; char c; for(i=0; i<s; i++){ // Calcula a quantidade de caracteres num_char = MAX_ASCII_PRINTBLE-MIN_ASCII_PRINTBLE; // Limita o número aleatorio gerado para que fique // entre MIN_ASCII_PRINTBLE e MAX_ASCII_PRINTBLE c = (char)((rand() % num_char) + MIN_ASCII_PRINTBLE); // Monta a string aleatória string[i] = c; } // Colocar o terminador string[s] = 0; } void *PrintHello (void *arg) { int i,j; // Gera o MD5 da senha de teste. // O ideal é passar como entrada o hash já gerado. MD5(password, sizeof(password), hash1); // Controle dos tamanhos das strings for (j=tamanhoMinPalavra; j<=tamanhoMaxPalavra; j++){ // Controle das repetições for (i=0; i<N; i++){ // Gera string aleatória gen_random_string(string, j); // Gera o MD5 da string para comparar com o hash da // senha alvo. MD5(string, j+1, hash2); // Compara os hashes if(strcmp(hash1, hash2) == 0){ printf("Achou: %s\n", string); cont++; } } } pthread_exit(NULL); } int main(int argc, char* argv[]) { pthread_t tid_sistema[NTHREADS]; int i; int arg; double tempo_ini, tempo_fim; printf("Entre com o número de repetições: "); scanf("%lu", &N); printf("Entre com o tamanho mínimo da string: "); scanf("%d", &tamanhoMinPalavra); printf("Entre com o tamanho máximo da string: "); scanf("%d", &tamanhoMaxPalavra); // Tempo inicial tempo_ini = GET_TIME(); // Usa o tempo como semente dos números aleatórios srand(time(NULL)); for(i=0; i<NTHREADS; i++){ printf("Cria a thread %d\n", i); arg = i; if(pthread_create(&tid_sistema[i], NULL, PrintHello, (void*) &arg)) { printf("Erro: pthread_create()"); exit(-1); } } for(i=0; i<NTHREADS; i++){ printf("teste %d\n", i); if(pthread_join(tid_sistema[i], NULL)) { printf("Erro: pthread_join()"); exit(-1); } } tempo_fim = GET_TIME(); // Colisões printf("Colisoes: %d (tempo: %f)\n", cont, tempo_fim - tempo_ini); return 0; }
  3. enho um aplicativo para consultar as vendas de uma banco postgre, jogo os registros na query e faço um loop pegando os produtos e pagamentos de cada venda e montando um JSON, após montado o JSON realizo um post em um webservice de outro software de terceiro(erp principal), tudo isso coloquei dentro do processo de uma thread, consultando pelo log a cada 4 há 6 segundos monta o json e faz o post no webservice, a situção é que em 1 mes de venda de apenas um loja tenho em media 25.000 vendas isso está dando mais de 24 horas executando.Com isso comecei a caçado sobre pool de thread, parallel e tasks, na verdade não sei o que usar e qual maneira corretamente, já vi vários videos, li artigos, mas não consegui materializar tudo em linha de codigo com meu problema, na verdade estava pretendendo enviar 100 posts no webservice, pois vários ao mesmo tempo a api consegue processar rapidamente, então o que preciso é de uma ajuda se realizo com pool de tread, parallel ou task...Para terem uma noção melhor montei um exemplo que chega bem proximo do modelo funcional do processo, como existe varias consultas e validação, creio que não compensa postar o codigo.... unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type MinhaThread = class(TThread) procedure Execute; override; procedure Verifica; procedure Fechar; Private constructor Create(); end; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } thread: MinhaThread; public { Public declarations } procedure consultaProcesso(Sender: TObject); procedure postJSON(JSON:String); end; var Form1: TForm1; I : Integer; JSON:String; implementation {$R *.dfm} { MinhaThread } constructor MinhaThread.Create; begin inherited Create(True); FreeOnTerminate := True; Priority := tpLower; Resume; end; procedure MinhaThread.Execute; Var Sender : TObject; begin Synchronize(Verifica); Form1.consultaProcesso(Sender); // Executar Rotina ( Procedures ) while not Terminated do begin Sleep (10); Terminate; // Finaliza a Thread Synchronize(Fechar); end; end; procedure MinhaThread.Fechar; begin //application.terminate; end; procedure MinhaThread.Verifica; begin Form1.Caption := 'EXECUTANDO...'+IntToStr(I); end; { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin thread := MinhaThread.Create(); end; procedure TForm1.consultaProcesso(Sender: TObject); begin //exemplo com o for // porem aqui eu percorro a query, passo // para a variavel JSON o json que está na query // e chamo o metodo post for I := 0 to 100 do begin postJSON(JSON); end; end; procedure TForm1.postJSON(JSON: String); begin //faz um post pelo idHTTP; Memo1.Lines.Add(DateTimeToStr(now)+ ' - Executando JSON '+IntToStr(I)); //para simular um tempo de espera do retorno Sleep(1000); //retorno... Memo1.Lines.Add(DateTimeToStr(now)+ ' - Retorno JSON '+IntToStr(I)); end; end.
  4. Eu montei um processo atraves desse exemplo de Thread; procedure TForm2.Button2Click(Sender: TObject); var MyThread:TThread; begin ProgressBar1.Position := 0; ProgressBar2.Position := 0; MyThread := TThread.CreateAnonymousThread(procedure var i:integer; begin for i := 0 to 100 do begin TThread.Synchronize(MyThread, procedure begin ProgressBar1.Position := i; ProgressBar2.Position := i * 2; end); Sleep(100); end; end); MyThread.Start; end; porém agora o que eu preciso saber quando ela terminou para eu fechar a aplicação;
  5. Fiz em C um programa no Linux de multiplicação de matrizes de ordem 1000 A e B, (Ou seja, matrizes quadradas 1000x1000) que resulta em uma outra matriz C, só que agora eu tenho que adicionar threads e não sei como e nem aonde coloca-las. Eu preciso de 4 threads: 1 para calcular de 0 à 249; 2 para calcular de 250 à 499; 3 para calcular de 500 à 749; 4 para calcular de 750 à 999; Segue código abaixo: #include <time.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> int main(){ pthread_t thread_1; pthread_t thread_2; pthread_t thread_3; pthread_t thread_4; int i; int j; int linhas; int colunas; int ordem; long T1; long T2; float delta; printf("Digite a ordem das matrizes quadradas A e B: "); scanf("%d", &ordem); T1 = clock(); printf("\nAs matrizes quadradas A e B, são matrizes de ordem %d",ordem); ordem = ordem - 1; linhas = ordem; colunas = ordem; float A[linhas+1][colunas+1]; float B[linhas+1][colunas+1]; for(i = 0; i <= linhas; i++){ for(j = 0; j <= colunas; j++){ printf("\n\nEntre com o valor da matriz A[%d][%d]: ",i+1,j+1); scanf("%f", &A[i][j]); printf("\nEntre com o valor da matriz B[%d][%d]: ",i+1,j+1); scanf("%f", &B[i][j]); } } printf("\nA multiplicacao das matrizes A e B:\n\n"); for(i = 0; i <= linhas; i++) { for(j = 0; j <= colunas; j++) { float produto[linhas+1][colunas+1]; for(int AUX = 0; AUX <= ordem; AUX++) { produto[i][j] += A[i][AUX] * B[AUX][j]; } printf("%.2f ",produto[i][j]); } printf("\n"); } T2 = clock(); delta = (float)(T2-T1)/CLOCKS_PER_SEC; printf("\n\nTempo %.5f segundos",delta); return 0; } Desde já agradeço!
  6. Olá, estou desenvolvendo (para estudo apenas) um código para um chat em python, e me deparei com um erro durante a comunicação cliente-servidor, gostaria de uma orientação acerca do mesmo, visto que não consigo identificar uma soluçao. Segue o código e a imagem do erro. Servidor: import threading # threads from socket import * # sockets clientes_conn = [] # Lista de conexões/clientes clientes_name = [] # Lista dos nomes das conexões class minhaThread (threading.Thread): def __init__(self, threadID, threadName, connectionSocket): threading.Thread.__init__(self) self.id = threadID self.name = threadName self.conn = connectionSocket def run(self): chat_geral(self.conn,self.name) ''' param == 1 => Mensagem do sistema param == 2 => Mensagem do cliente ''' def enviar_mensagem(msg, name, param): for conn in clientes_conn: conn.send(msg) if param == 1: print msg else: print "("+name+"): "+msg def adicionar_cliente(connectionSocket, _id): while 1: message2 = connectionSocket.recv(1024) if message2 == "": continue if message2 in clientes_name: serverSocket.send("O nome informado está sendo usado por um cliente atualmente.\n") continue clientes_conn.append(connectionSocket) clientes_name.append(message2) success = "Cliente '"+str(message2)+"' conectado com sucesso!" enviar_mensagem(success, message2, 1) # Entra no terceiro while 1 thread = minhaThread(_id, message2, connectionSocket).start() clientes_conn.remove(connectionSocket) clientes_name.remove(message2) connectionSocket.close() break def chat_geral(connectionSocket, name): while 1: msg = connectionSocket.recv(1024) if msg == "Sair" or msg == "sair": sair = "Cliente "+name+" está saindo do chat." enviar_mensagem(sair, name, 1) break enviar_mensagem(msg, name, 2) serverName = 'localhost' serverPort = 8080 serverSocket = socket(AF_INET,SOCK_STREAM) serverSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) serverSocket.bind((serverName,serverPort)) serverSocket.listen(1) print "Servidor TCP esperando conexoes na porta %d ..." % (serverPort) id_padrao = 0 while 1: connectionSocket, address = serverSocket.accept() print "Cliente "+str(address[1])+" tentando se conectar..." adicionar_cliente(connectionSocket, id_padrao) id_padrao += 1 serverSocket.close() Cliente: from socket import * # sockets import threading # threads class minhaThread (threading.Thread): def __init__(self, threadName, clientSocket): threading.Thread.__init__(self) self.name = threadName self.conn = clientSocket def run(self): chat_geral(self.name,self.conn) def conectar_chat(clientSocket): while 1: msg = raw_input("Digite seu nome: ") clientSocket.send(msg) message = clientSocket.recv(1024) print message if message.find("conectado com sucesso") != -1: thread = minhaThread(msg,clientSocket).start() break def chat_geral(name,clientSocket): while 1: msg = raw_input("Digite (mensagem/comando): ") clientSocket.send(msg) msg2 = clientSocket.recv(1024) if msg2 == "saindo do chat" and msg.find(name) != -1: print "Desconectando do server." break print msg2 # definicao das variaveis serverName = 'localhost' # ip do servidor serverPort = 8080 # porta a se conectar clientSocket = socket(AF_INET,SOCK_STREAM) # criacao do socket TCP clientSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) clientSocket.connect((serverName,serverPort)) # conecta o socket ao servidor while 1: conectar_chat(clientSocket) break clientSocket.close() Imagem do erro: http://i.imgur.com/ai0HoCo.jpg
  7. alguém poderia me ajudar?estou tentando multiplicar duas matrizes, A e Be salvar o resultado em Co resultado não ta certo, to usando threadso queria uma opinião para saber se ta certo o que to fazendo, porque o que ta me intrigando é que os valores da linha da matriz C não altera #include<stdio.h> #include<stdlib.h> #include<pthread.h> pthread_t thread_1; pthread_t thread_2; pthread_t thread_3; int a[3][2] = {{1, 4}, {2, 5}, {3, 6}}; int b[2][3] = {{7, 8, 9}, {10, 11, 12}}; int c[3][3] = {{1, 2, 3}, {0, 0, 0}, {0, 0, 0}}; void* tarefa_1(void *p) { printf("\nThread1\n"); for (int col = 0; col < 3; col++) { // Multiplica a linha de A pela coluna de B. for (int i = 0; i < 2; i++) { c[1][col] += a[1][i] * b[i][col]; } printf("%i\t",c[1][col]); printf("\n"); } } void* tarefa_2(void *p) { printf("\nThread2\n"); for (int col = 0; col < 3; col++) { // Multiplica a linha de A pela coluna de B. for (int i = 0; i < 2; i++) { c[2][col] += a[2][i] * b[i][col]; } printf("%i\t",c[2][col]); printf("\n"); } } void* tarefa_3(void *p) { printf("\nThread3\n"); for (int col = 0; col < 3; col++) { // Multiplica a linha de A pela coluna de B. for (int i = 0; i < 2; i++) { c[3][col] += a[3][i] * b[i][col]; } printf("%i\t",c[3][col]); printf("\n"); } } int main() { printf("Inicio das Threads...\n"); // inicia as duas threads, passando como parametroa thread e a função que cada uma deve executar pthread_create(&thread_1, NULL, tarefa_1, NULL); pthread_create(&thread_2, NULL, tarefa_2, NULL); pthread_create(&thread_3, NULL, tarefa_3, NULL); // faz com que a thread principal espere a thread 1,2,3 acabarem; pthread_join(thread_1, NULL); pthread_join(thread_2, NULL); pthread_join(thread_3, NULL); printf("resultado da tabela 3\n"); for(int i = 0;i<3; i++){ for(int j= 0; j<3;j++){ printf("%i\t ",c[i][j]); } printf("\n"); } exit(0); }
  8. Ol'a, estou tentando compilar este programa... #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <string.h> #include <unistd.h> #include <sys/time.h> #include <sys/timerfd.h> static int thread_1_count; static int thread_2_count; long start; int out[1000]; static void *thread_1(void *arg) { start=now(); printf("Thread 1 period 10ms\n"); for(int t=0; t <1000; t++){ out[t] = now() - start; start = now(); delay_ms(1); } return NULL; } static void *thread_2(void *arg) { printf("Thread 2 period 20ms\n"); while (1) { thread_2_count++; for(int i=0;i<1000;i++){ printf("%d", "%d", i, out[i] ); } } return NULL; } int main(int argc, char *argv[]) { pthread_t t_1; pthread_t t_2; printf("Periodic threads using timerfd\n"); pthread_create(&t_1, NULL, thread_1, NULL); pthread_create(&t_2, NULL, thread_2, NULL); sleep(10); printf("thread1 %d iterations\n", thread_1_count); printf("thread2 %d iterations\n", thread_2_count); return 0; } Para fazer um teste no Ubuntu com o RTAI, por'em, ele est'a retornando este erro abaixo: obs: 'e um trecho de codigo do 2net.com, fiz algumas altera'coes para comparar o tempos. obs2: ele estava rodando normalmente, mesmo ap'os minhas altera'coes. # cc -Wall -std=gnu99 -g -pthread -lrt -o timerfd timerfd.c -lrt timerfd.c: In function ‘thread_1’: timerfd.c:27:2: warning: implicit declaration of function ‘now’ [-Wimplicit-function-declaration] start=now(); ^ timerfd.c:35:4: warning: implicit declaration of function ‘delay_ms’ [-Wimplicit-function-declaration] delay_ms(1); ^ timerfd.c: In function ‘thread_2’: timerfd.c:50:5: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘char *’ [-Wformat=] printf("%d", "%d", i, out ); ^ timerfd.c:50:5: warning: too many arguments for format [-Wformat-extra-args] /tmp/cc7hgWzU.o: na função `thread_1': /home/bessa/src/periodic-threads-master/timerfd.c:27: referência indefinida para `now' /home/bessa/src/periodic-threads-master/timerfd.c:32: referência indefinida para `now' /home/bessa/src/periodic-threads-master/timerfd.c:33: referência indefinida para `now' /home/bessa/src/periodic-threads-master/timerfd.c:35: referência indefinida para `delay_ms' collect2: error: ld returned 1 exit status make: ** [timerfd] Erro 1
  9. Pessoal, estou construindo um conjunto cliente-servidorO servidor é em C# e o cliente é em C++ nativo.O meu servidor fica escutando uma determinada porta, aguardando a conexão de alguns clientes, o servidor também é multitarefa, podendo aceitar diversas conexões simultaneamente, porém estou com um problema muito preocupante, veja:Até agora usei duas threads as duas executam um laço de repetição infinito. A primeira thread(com o laço infinito) fica constantemente verificando se há novas conexões a serem aceitas, se existe alguma, ela adiciona a conexão em um List<TcpClient>, a segunda thread (também com loop infinito) fica constantemente verificando se essas conexões estão ativas, ou seja, se alguma delas não estiver, ele remove ela do List<TcpClient>.O meu problema é que quando fui monitorar o consumo de recursos da aplicação pelo gerenciador de tarefas, percebi que está consumindo incríveis 30% do meu processador (I5 4460 3.2 GHz). Estou achando esse consumo absurdo para uma aplicação relativamente simples.Laços de repetições infinitos consomem tanto assim? Ou o fato de usar Threads já contribui para esse consumo? Como eu poderia resolver este problema?
  10. Como eu faria para quando uma thread terminar interromper outra? Eu inicio minhas 2 thread assim: for thread_number in range (2): thread = ICMP(thread_number) thread.start() dentro da classe ICMP tenho um if e um else, quando for a thread 0 ele faz uma coisa e quando for a thread 1 faz outra. Eu preciso que quando a thread 0 termine a thread 1 termine também. Como eu posso fazer isso?
  11. Boa tarde pessoal. Estou com um problema,tenho que fazer um projeto em C pra faculdade,que seria um sistema de gerenciamento de uma usina termelétrica de biomassa. Então eu fiz uma janela de comandos,onde pode-se ligar uma maquina 1,2 ou 3.O problema é que se eu ligo a maquina 1,por exemplo,eu não consigo ligar as outras duas enquanto a maquina 1 estiver ligada.Dei uma pesquisada e aprendi um pouco sobre as threads,acho que isso seria o mais viável de eu fazer.Só que o programa já está com meio caminho andado e as funções que criei são do tipo 'int'.Gostaria de saber se é possivel criar uma thread sem precisar usar uma função void. [/EDIT] Desculpa,acho que acabei explicando muito mal o que consiste nesse projeto. O projeto consiste no seguinte: Teremos 3 máquinas de cada tipo,sendo 9 no total (3 Moendas, 3 caldeiras e 3 geradores ). Quando se liga a moenda 1,o programa começa a gerar valores aleatórios da rotação da moenda, e enquanto a moenda estiver ligada, a caldeira também estará ligada e gerará valores aleatórios de temperatura. E por fim,se a caldeira está ligada, o gerador estará ligado também,gerando valores aleatórios de energia produzida. Então eu separei essas 9 maquinas em três partes - 1 moenda, 1 caldeira e 1 gerador pra cada parte -, ou seja,temos agora que o usuário poderá ligar a 'Moenda 1' e com isso o programa ficará rodando e gerando valores para a moenda, seguido da caldeira e por ultimo o gerador. E o problema se encontra aí..pois quando eu ligo a 'Moenda 1',o programa fica gerando valores até que dê algum erro nas máquinas, porém enquanto ele fica rodando a Moenda 1,eu não consigo ligar a 'Moenda 2 e 3' simultaneamente. [\EDIT] OBS: Uso o codeblocks no windows 10. Agradeço
  12. Boa tarde. Eu estou desenvolverndo um projeto de controle de equipamentos. To usando uma thread para realocar de uma pasta para outra, imagens que eu recebo de outros scripts. Minha dúvida é, se quando eu vou implementar o metodo run(), eu posso passar algum argumento.. por exemplo: def run(self, arq): . . . Isso é válido ou eu não posso passar argumentos em run()?? Obrigado desde já!
  13. Olá galera da Scriptbrasil. Estou criando uma proteção para um jogo online, preciso proteger minhas threads para que elas não possam ser suspenças ou pausadas ou finalizadas ex: ProcessHacker, ProcessExplorer entre outros.. Eu faço da seguinte forma: Procedure CheckClasse(); begin while true do begin if FindWindow('cheat', nil) > 0 then begin ExitProcess(0); end; end; end; var hID : DWORD; begin CreateThread(nil,0,@CheckClasse,nil,0,hID); end. Então, ele cria uma thread na função CheckClasse, mais se eu abrir o programa ProcessHacker ou ProcessExplorer ir nas propriedades la eu acho a Thread rodando, eu pauso ela e a proteção pausa. queria impedir isso, alguém poderia me manda um exemplo de codigo feito em delphi? abrssss
  14. Bom dia. Eu tenho a seguinte THREAD : unit u_thread; interface uses Classes, Windows, Messages, SysUtils, Variants, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ComCtrls,DateUtils,Contnrs, SyncObjs; type Tfuncoes = class(TThread) protected procedure execute();override; private public procedure parar(); end; implementation uses u_dm, u_inventario; procedure Tfuncoes.parar(); begin end; procedure Tfuncoes.execute(); begin Inherited; Priority := tpLower; try f_inventario.SQLPro.Close; f_inventario.SQLPro.Open; except abort; end; end; end. Em um determinado momento preciso parar está THREAD, porem ela ainda está tentado executar esse comando "f_inventario.SQLPro.Open;" , já tentei THREAD.TERMINATE; mas não funciona. alguém sabe uma maneira de para com o "f_inventario.SQLPro.Open;" .
×
×
  • Criar Novo...