Buscar

EXERCICIO LAB2 THREADS - SISTEMAS OPERACIONAIS

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

ATIVIDADE 1 - ENTENDIDO E EXECUTADO O CÓDIGO
---------------------------------------------------------------------------------------------------------------------------
ATIVIDADE 2 - CRIADO NOVAS THREADS "CONCORRENTES", NOMEADAS DE NovaThread2 e NovaThread3. CÓDIGO ABAIXO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace Exemplo_Thread_1
{
 class Program
 {
 static void Main(string[] args)
 { // dispara uma nova thread para executar: repare que NovaThread é uma
 // função comum em C# 
 Thread t = new Thread(NovaThread);
 Thread c = new Thread(NovaThread2);
 Thread d = new Thread(NovaThread3);
 t.Start();
 c.Start();
 d.Start();
 
 for (int i = 0; i < 10000; i++)
 Console.Write("A");
 Console.ReadKey();
 }
 static void NovaThread()
 {
 for (int i = 0; i < 10000; i++)
 Console.Write("B");
 }
 static void NovaThread2()
 {
 for (int i = 0; i < 10000; i++)
 Console.Write("C");
 }
 static void NovaThread3()
 { 
 for (int i = 0; i < 10000; i++)
 Console.Write("D");
 }
 }
}
---------------------------------------------------------------------------------------------------------------------------
ATIVIDADE3 - FOI ENTENDIDO E EXECUTADO O CÓDIGO.
---------------------------------------------------------------------------------------------------------------------------
ATIVIDADE 4 - FOI ENTENDIDO O CÓDIGO E COMENTADO PARA O USUÁRIO CADA ETAPA DO PROCESSO. (CÓDIGO NO FIM)
---------------------------------------------------------------------------------------------------------------------------
ATIVIDADE 5 - O programa inicia instanciando uma nova Thread na variável 't' e força a mesma a rodar. Após é gerado um loop para que haja um delay a cada momento que é impresso algum texto na tela enquanto a contagem de THREADPROC continua concorrendo com o texto. Após, o programa suspende o texto exibido e inicia o ATRIBUTO JOIN para que somente a ThreadProc dada como principal finalize seu processo enquanto as demais aguardam o fim. (CÓDIGO NO FIM)
---------------------------------------------------------------------------------------------------------------------------
ATIVIDADE 6 - FOI GERADO 2 RANDOM'S. (CÓDIGO NO FIM)
RANDOM PARA VALOR 4 - DE 1 ATÉ 20 com o valor do Random armazenado em 'randomico1'
RANDOM PARA VALOR 10 - DE 20 ATÉ 50 com o valor do Random armazendo em 'randomico2'
MOTIVO: DESSA FORMA A DIDÁTICA E ENTENDIMENTO DO PROGRAMA FICA FACILITADA. 
RELACIONANDO QUE O VALOR 4<10 = randomico1<randomico2 = 1a20<20a50, ENTENDEU?
---------------------------------------------------------------------------------------------------------------------------
CÓDIGO VÁLIDO PARA AS QUESTÕES 4 , 5 E 6.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace Exemplo_Thread_3
{
 class Program
 {
 public static void Main()
 {
 Console.WriteLine("\n\nJULIO... MODIFIQUEI O CÓDIGO PARA MELHOR DIDÁTICA, POIS ESTOU ENTENDENDO A MATÉRIA PERFEITAMENTE!" +
 "\nTANTO QUE ESTOU TENTANDO MELHORAR O CÓDIGO PARA A MINHA MANEIRA DE ENTEDIMENTO! OBRIGADO PELA COMPREENSÃO. " +
 "SE OBSERVAR, ESTÁ FAZENDO TUDO O QUE VOCE PEDE OK?!\n\n\n Pressione ENTER para continuarmos...");
 Console.ReadLine();
 Console.Clear();
 Console.WriteLine("\n\n <<< ÍNICIO DE THREAD SERÁ INICIADA COM O DELAY DE 1/2seg >>>");
 Thread t = new Thread(new ThreadStart(ThreadProc));
 t.Start();
 Thread.Sleep(500);
 Random Aleatorio = new Random();
 int randomico1= Aleatorio.Next(1, 20);
 for (int i = 0; i < randomico1; i++)
 {
 Console.WriteLine($"\n Delay n°{i+1}/{randomico1} de 1seg até a próxima escrita...\n");
 Thread.Sleep(1000);
 }
 
 Console.WriteLine($"\n DELAY DE 1seg FINALIZADO! AGUARDE A CONTAGEM DE THREADS! \n\n ---APLICADO ATRIBUTO JOIN QUE AGUARDA UMA THREAD FINALIZAR---\n\n");
 t.Join();
 Console.WriteLine("\n\n <<< FIM DA CONTAGEM DE THREADS! >>>");
 Console.WriteLine("\n\n <<< MODIFIQUEI O CÓDIGO PARA MELHOR DIDÁTICA JULIO, POIS ESTOU ENTENDENDO A MATÉRIA PERFEITAMENTE!\nTANTO QUE ESTOU TENTANDO MELHORAR O CÓDIGO PARA A MINHA MANEIRA DE ENTEDIMENTO! >>>");
 Console.ReadLine();
 }
 public static void ThreadProc()
 {
 Random AleatorioThread = new Random();
 int randomico2 = AleatorioThread.Next(20, 50);
 Console.WriteLine($" ~~~~~~~~~~~~ THREADPROC A CONTAR: {randomico2} ~~~~~~~~~~~~");
 for (int i = 0; i < randomico2; i++)
 {
 Console.WriteLine($"ThreadProc: {i+1}/{randomico2}");
 Thread.Sleep(500);
 }
 }
 }
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando