예제 #1
0
 public Operacao(string nome, Item itemA, Item itemB, Item itemC, Transacao transacao, GerenciadorExecucao gerenciador)
 {
     Nome        = nome.ToLower();
     ItemA       = itemA;
     ItemB       = itemB;
     ItemC       = itemC;
     Transacao   = transacao;
     Gerenciador = gerenciador;
 }
예제 #2
0
        static void Main(string[] args)
        {
            Item itemX = new Item(10);
            Item itemY = new Item(20);
            Item itemM = new Item(60);
            Item itemN = new Item(40);

            GerenciadorExecucao gerenciadorExecucao = new GerenciadorExecucao();

            Transacao t1 = new Transacao(1);
            Transacao t2 = new Transacao(2);
            Transacao t3 = new Transacao(3);

            /*
             * //Plano do Luiz #1
             * Operacao opT1_0 = new Operacao("wlock", itemX, null, null, t1, gerenciadorExecucao);
             * opT1_0.Iniciar();
             * Operacao opT1_1 = new Operacao("rlock", itemN, null, null, t1, gerenciadorExecucao);
             * opT1_1.Iniciar();
             * Operacao opT1_2 = new Operacao("ler", itemX, null, null, t1, gerenciadorExecucao);
             * opT1_2.Iniciar();
             * Operacao opT1_3 = new Operacao("ler", itemN, null, null, t1, gerenciadorExecucao);
             * opT1_3.Iniciar();
             * Operacao opT1_4 = new Operacao("subtrair", itemX, itemX, itemN, t1, gerenciadorExecucao);
             * opT1_4.Iniciar();
             * Operacao opT1_5 = new Operacao("gravar", itemX, null, null, t1, gerenciadorExecucao);
             * opT1_5.Iniciar();
             * Operacao opT1_6 = new Operacao("unlock", itemX, null, null, t1, gerenciadorExecucao);
             * opT1_6.Iniciar();
             * Operacao opT1_7 = new Operacao("wlock", itemY, null, null, t1, gerenciadorExecucao);
             * opT1_7.Iniciar();
             * Operacao opT1_8 = new Operacao("ler", itemY, null, null, t1, gerenciadorExecucao);
             * opT1_8.Iniciar();
             * Operacao opT1_9 = new Operacao("somar", itemY, itemY, itemN, t1, gerenciadorExecucao);
             * opT1_9.Iniciar();
             * Operacao opT1_10 = new Operacao("gravar", itemY, null, null, t1, gerenciadorExecucao);
             * opT1_10.Iniciar();
             * Operacao opT1_11 = new Operacao("unlock", itemY, null, null, t1, gerenciadorExecucao);
             * opT1_11.Iniciar();
             * Operacao opT1_12 = new Operacao("unlock", itemN, null, null, t1, gerenciadorExecucao);
             * opT1_12.Iniciar();
             *
             * //Operação T2
             * Operacao opT2_0 = new Operacao("wlock", itemX, null, null, t2, gerenciadorExecucao);
             * opT2_0.Iniciar();
             * Operacao opT2_1 = new Operacao("ler", itemX, null, null, t2, gerenciadorExecucao);
             * opT2_1.Iniciar();
             * Operacao opT2_2 = new Operacao("rlock", itemM, null, null, t2, gerenciadorExecucao);
             * opT2_2.Iniciar();
             * Operacao opT2_3 = new Operacao("ler", itemM, null, null, t2, gerenciadorExecucao);
             * opT2_3.Iniciar();
             * Operacao opT2_4 = new Operacao("somar", itemX, itemX, itemM, t2, gerenciadorExecucao);
             * opT2_4.Iniciar();
             * Operacao opT2_5 = new Operacao("gravar", itemX, null, null, t2, gerenciadorExecucao);
             * opT2_5.Iniciar();
             * Operacao opT2_6 = new Operacao("unlock", itemX, null, null, t2, gerenciadorExecucao);
             * opT2_6.Iniciar();
             * Operacao opT2_7 = new Operacao("unlock", itemM, null, null, t2, gerenciadorExecucao);
             * opT2_7.Iniciar();
             */

            /*
             * //Teste do Luiz #Embaralhado
             * Operacao opT1_0 = new Operacao("wlock", itemX, null, null, t1, gerenciadorExecucao);
             * opT1_0.Iniciar();
             * Operacao opT1_1 = new Operacao("rlock", itemN, null, null, t1, gerenciadorExecucao);
             * opT1_1.Iniciar();
             * Operacao opT1_2 = new Operacao("ler", itemX, null, null, t1, gerenciadorExecucao);
             * opT1_2.Iniciar();
             * Operacao opT1_3 = new Operacao("ler", itemN, null, null, t1, gerenciadorExecucao);
             * opT1_3.Iniciar();
             * Operacao opT1_4 = new Operacao("subtrair", itemX, itemX, itemN, t1, gerenciadorExecucao);
             * opT1_4.Iniciar();
             * Operacao opT1_5 = new Operacao("gravar", itemX, null, null, t1, gerenciadorExecucao);
             * opT1_5.Iniciar();
             * Operacao opT1_6 = new Operacao("unlock", itemX, null, null, t1, gerenciadorExecucao);
             * opT1_6.Iniciar();
             *
             * //Operação T2
             * Operacao opT2_0 = new Operacao("wlock", itemX, null, null, t2, gerenciadorExecucao);
             * opT2_0.Iniciar();
             * Operacao opT2_1 = new Operacao("ler", itemX, null, null, t2, gerenciadorExecucao);
             * opT2_1.Iniciar();
             * Operacao opT2_2 = new Operacao("rlock", itemM, null, null, t2, gerenciadorExecucao);
             * opT2_2.Iniciar();
             * Operacao opT2_3 = new Operacao("ler", itemM, null, null, t2, gerenciadorExecucao);
             * opT2_3.Iniciar();
             * Operacao opT2_4 = new Operacao("somar", itemX, itemX, itemM, t2, gerenciadorExecucao);
             * opT2_4.Iniciar();
             * Operacao opT2_5 = new Operacao("gravar", itemX, null, null, t2, gerenciadorExecucao);
             * opT2_5.Iniciar();
             * Operacao opT2_6 = new Operacao("unlock", itemX, null, null, t2, gerenciadorExecucao);
             * opT2_6.Iniciar();
             * Operacao opT2_7 = new Operacao("unlock", itemM, null, null, t2, gerenciadorExecucao);
             * opT2_7.Iniciar();
             *
             * //Continuando T1
             * Operacao opT1_7 = new Operacao("wlock", itemY, null, null, t1, gerenciadorExecucao);
             * opT1_7.Iniciar();
             * Operacao opT1_8 = new Operacao("ler", itemY, null, null, t1, gerenciadorExecucao);
             * opT1_8.Iniciar();
             * Operacao opT1_9 = new Operacao("somar", itemY, itemY, itemN, t1, gerenciadorExecucao);
             * opT1_9.Iniciar();
             * Operacao opT1_10 = new Operacao("gravar", itemY, null, null, t1, gerenciadorExecucao);
             * opT1_10.Iniciar();
             * Operacao opT1_11 = new Operacao("unlock", itemY, null, null, t1, gerenciadorExecucao);
             * opT1_11.Iniciar();
             * Operacao opT1_12 = new Operacao("unlock", itemN, null, null, t1, gerenciadorExecucao);
             * opT1_12.Iniciar();
             */

            //Teste do Luiz #1. Plano não serial
            Operacao opT1_0 = new Operacao("wlock", itemX, null, null, t1, gerenciadorExecucao);

            opT1_0.Iniciar();
            Operacao opT1_1 = new Operacao("rlock", itemN, null, null, t1, gerenciadorExecucao);

            opT1_1.Iniciar();
            Operacao opT1_2 = new Operacao("ler", itemX, null, null, t1, gerenciadorExecucao);

            opT1_2.Iniciar();
            Operacao opT1_3 = new Operacao("ler", itemN, null, null, t1, gerenciadorExecucao);

            opT1_3.Iniciar();
            Operacao opT1_4 = new Operacao("subtrair", itemX, itemX, itemN, t1, gerenciadorExecucao);

            opT1_4.Iniciar();
            Operacao opT1_5 = new Operacao("gravar", itemX, null, null, t1, gerenciadorExecucao);

            opT1_5.Iniciar();

            //Operação T2
            Operacao opT2_0 = new Operacao("wlock", itemX, null, null, t2, gerenciadorExecucao);

            opT2_0.Iniciar();
            Operacao opT2_1 = new Operacao("ler", itemX, null, null, t2, gerenciadorExecucao);

            opT2_1.Iniciar();
            Operacao opT2_2 = new Operacao("rlock", itemM, null, null, t2, gerenciadorExecucao);

            opT2_2.Iniciar();
            Operacao opT2_3 = new Operacao("ler", itemM, null, null, t2, gerenciadorExecucao);

            opT2_3.Iniciar();
            Operacao opT2_4 = new Operacao("somar", itemX, itemX, itemM, t2, gerenciadorExecucao);

            opT2_4.Iniciar();
            Operacao opT2_5 = new Operacao("gravar", itemX, null, null, t2, gerenciadorExecucao);

            opT2_5.Iniciar();
            Operacao opT2_6 = new Operacao("unlock", itemX, null, null, t2, gerenciadorExecucao);

            opT2_6.Iniciar();
            Operacao opT2_7 = new Operacao("unlock", itemM, null, null, t2, gerenciadorExecucao);

            opT2_7.Iniciar();

            //Voltando a T1
            Operacao opT1_6 = new Operacao("unlock", itemX, null, null, t1, gerenciadorExecucao);

            opT1_6.Iniciar();
            Operacao opT1_7 = new Operacao("wlock", itemY, null, null, t1, gerenciadorExecucao);

            opT1_7.Iniciar();
            Operacao opT1_8 = new Operacao("ler", itemY, null, null, t1, gerenciadorExecucao);

            opT1_8.Iniciar();
            Operacao opT1_9 = new Operacao("somar", itemY, itemY, itemN, t1, gerenciadorExecucao);

            opT1_9.Iniciar();
            Operacao opT1_10 = new Operacao("gravar", itemY, null, null, t1, gerenciadorExecucao);

            opT1_10.Iniciar();
            Operacao opT1_11 = new Operacao("unlock", itemY, null, null, t1, gerenciadorExecucao);

            opT1_11.Iniciar();
            Operacao opT1_12 = new Operacao("unlock", itemN, null, null, t1, gerenciadorExecucao);

            opT1_12.Iniciar();
        }