Example #1
0
main()
{
int nprocs = 4;

//tempo

struct timeval iniciotmp, finaltmp;

int tempogasto;


int pidf,id_wait;
void dt_shareG();

   mc_var_inic ();

   def_task (0, "inicializa_matriz", sizeof (__inicializa_matriz__));
   def_task (1, "multiplica_matriz", sizeof (__multiplica_matriz__));
   id_wait=sem_wait_inic(2);


   alloc_proc(nprocs);
      
   pidf = exec_task (0, nprocs);  /* --- rs30() - create --- */
   if (pidf == 0)   {
      inicializa_matriz();
      end_task();            /* --- rs31() - create --- */
   }

    wait_all();
    gettimeofday(&iniciotmp, NULL);
      
   pidf = exec_task (1, nprocs);  /* --- rs30() - create --- */
   if (pidf == 0)   {
      multiplica_matriz();
      end_task();            /* --- rs31() - create --- */
   }

    wait_all();
    gettimeofday(&finaltmp, NULL);
    tempogasto = (int) (1000 * (finaltmp.tv_sec - iniciotmp.tv_sec) + (finaltmp.tv_usec - iniciotmp.tv_usec) / 1000);
    printf("Tempo decorrido: %d\n", tempogasto);
       wait_all();      /* --- rs307()  */
   end_program();
   remove_semaforo(id_wait);
return 0;
}
Example #2
0
// have to manage the task stack explicitly
void TimeTasks::end_task(TimeTasks::Tasks taskid)
{
  if(!is_output_thread()) return;
  stack_depth[taskid]--;
  assert_ge(stack_depth[taskid],0);
  if(stack_depth[taskid]==0)
  {
    end_task(taskid, start_times[taskid]);
  }
}
Example #3
0
File: EVENT.C Project: jeske/GTalk
void clear_all_old_pids_event(void)
{
  int search, pident;
  struct shared_glm_entry *entry;
  int found;
  int taskno;

  lock_dos(4000);
  search = num_shared;
  while (search>0)
  {
    search--;
    entry = glm_entries[search];
    pident = entry->number_of_tasks;
    while (pident>0)
    {
      pident--;
      found = 0;
      taskno = MAX_THREADS;
      while ((!found) && (taskno>0))
      {
        taskno--;
        if (is_alive(taskno))
         if (entry->pid_list[pident] == pid_of(taskno))
         {
           found = 1;
           break;
         }
      }
      if (!found)
      {
        entry->number_of_tasks--;
        for (taskno=pident;taskno<entry->number_of_tasks;taskno++)
          entry->pid_list[taskno] = entry->pid_list[taskno+1];
      }
    }
    if (!entry->number_of_tasks)
    {
      g_free(entry);
      num_shared--;
      for (taskno=search;taskno<num_shared;taskno++)
        glm_entries[taskno] = glm_entries[taskno+1];
    }
  }
  unlock_dos();
  end_task();
}
Example #4
0
int main()
{
int i, j;


int pidf,id_wait;
void dt_shareG();

   mc_var_inic ();

   def_task (0, "multiplicarAB", sizeof (__multiplicarAB__));
   def_task (1, "multiplicarCD", sizeof (__multiplicarCD__));
   def_task (2, "sumar", sizeof (__sumar__));
   def_task (3, "print", sizeof (__print__));
   id_wait=sem_wait_inic(4);


   for (i=0; i<100; i++){
        for (j = 0; j < 100; j++)
        {
            /*A[i][j] = i + j;
            B[i][j] = i + 2*j;
            C[i][j] = i*2 + j*3;
            D[i][j] = i*2 + j;*/
            sharedG->A[i][j] = 1;
            sharedG->B[i][j] = 1;
            sharedG->C[i][j] = 1;
            sharedG->D[i][j] = 1;
        }
    }

    alloc_proc(4);

      
   pidf = exec_task (0, 1);  /* --- rs30() - create --- */
   if (pidf == 0)   {
      multiplicarAB();
      end_task();            /* --- rs31() - create --- */
   }

      
   pidf = exec_task (1, 1);  /* --- rs30() - create --- */
   if (pidf == 0)   {
      multiplicarCD();
      end_task();            /* --- rs31() - create --- */
   }


    wait_all();

      
   pidf = exec_task (2, 1);  /* --- rs30() - create --- */
   if (pidf == 0)   {
      sumar();
      end_task();            /* --- rs31() - create --- */
   }

    
    
   wait_proc (2);    /* --- wait_proc() --- */


      
   pidf = exec_task (3, 1);  /* --- rs30() - create --- */
   if (pidf == 0)   {
      print();
      end_task();            /* --- rs31() - create --- */
   }


       wait_all();      /* --- rs307()  */
   end_program();
   remove_semaforo(id_wait);
return 0;
}
Example #5
0
File: USER.C Project: jeske/GTalk
void update_members_list(void)
{
    int data=(int)schedule_data[tswitch];
    char line[140];
    int number_users,number;
    char *outfile;
    int loop;
    struct user_data user_ptr;
    FILE *fileptr,*fileptr2;
    char temptime[60];

    switch (data)
      {
         case  0  : outfile=user_member_list;
                    aput_into_buffer(server,"--> Updating USER's Member List",0,5,tswitch,9,0);
                    break;
         case  1  : outfile=sysop_member_list;
                    aput_into_buffer(server,"--> Updating SYSOP's Member List",0,5,tswitch,9,0);
                    break;
         default  : end_task();
                    break;
      }

    lock_dos(74);


    if (!(fileptr=g_fopen(userfile,"rb","USER#3")))
       {
        log_error("*user file wouldn't open in update member list");
        log_error(userfile);
        unlock_dos();
        end_task();
       }
    if (!(fileptr2=g_fopen(outfile,"wb","USER#4")))
       {
        log_error("*could not open user member list");
        log_error(user_member_list);
        g_fclose(fileptr);
        unlock_dos();
        end_task();
       }
    fseek(fileptr,0,SEEK_SET);
    fseek(fileptr2,0,SEEK_SET);

    fscanf(fileptr,"%d\n",&number_users);
    unlock_dos();

    for (number=0;number<number_users;number++)
      {
        lock_dos(75);
        fseek(fileptr,
            (long int)sizeof(struct user_data)*(number+NUMDEFAULT),SEEK_SET);
        if (!fread(&user_ptr, sizeof(struct user_data), 1, fileptr))
                  {  log_error("* fread() failed on file in member update");
                     log_error(userfile);
                     g_fclose(fileptr);
                     g_fclose(fileptr2);
                     unlock_dos();
                     end_task();
                  }
        if (user_ptr.number>=0)
          { int point;
           if (data)
            {
              sprint_time(temptime,&(user_ptr.expiration));
              sprintf(line,"#%03d : %c%s|*r1%c",user_ptr.number,user_ptr.staple[2],user_ptr.handle,user_ptr.staple[3]);

              point=ansi_strlen(line);

             // for(loop=0;loop<(40-point);loop++)


              for(loop=0;loop<(35-point);loop++)
                 strcat(line," ");

              // fprintf(fileptr2,"%s%-20s %s%c%c",line,user_ptr.real_info.name,user_ptr.real_info.phone,13,10);

              fprintf(fileptr2,"%s%.17s%c%c",line,temptime,13,10);
            }
            else
              fprintf(fileptr2,"#%03d : %c%s|*r1%c%c%c",user_ptr.number,user_ptr.staple[2],user_ptr.handle,user_ptr.staple[3],13,10);
          }
        unlock_dos();
        next_task();
      }

     lock_dos(76);


        if (g_fclose(fileptr))
           {
             log_error("g_fclose failed");
             log_error(userfile);
             g_fclose(fileptr2);
             unlock_dos();
             end_task();
           }
         if (g_fclose(fileptr2))
           { log_error("*fclose failed");
             log_error(user_member_list);
             unlock_dos();
             end_task();
           }


    unlock_dos();
    switch (data)
    { case 0  : aput_into_buffer(server,"--> Update of USER's Member List DONE",0,5,tswitch,9,0);
                break;
      case 1  : aput_into_buffer(server,"--> Update of SYSOP's Member List DONE",0,5,tswitch,9,0);
                break;
      default : aput_into_buffer(server,"--> (DEFAULT) Member List Update Done",0,5,tswitch,9,0);
                break;
    }
    end_task();


}
Example #6
0
void TimeTasks::end_main_task(TimeTasks::Tasks taskid, double start_time)
{
  if(!is_output_thread()) return;
  end_task(taskid, start_time);
  active_task = NONE;
}