Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6298
Последний выпуск: 19.06.2015

время переключения процессов

58K
23 мая 2010 года
racushka
10 / / 23.05.2010
Есть программа, которая измеряет скорость передачи данных между процессами используя межпроцессные коммуникации – неименованный канал . Передаваемые данные представлены в виде произвольного набора символов.
Код:
#include <stdio.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/wait.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    time_t t;
        int ch_w=0, ch_r=0;        
    int fd[2], n, pid, i, size;
    struct timeval start, end;

    size=atoi(argv[1]);
    unsigned char* file=malloc((sizeof(char))*size);    

if (pipe(fd) == -1)
    {
    perror("Ошибка при создании канала");
    exit(1);
    }

if ((pid=fork()) < 0)
    {
    perror("Ошибка при создании потока");
    exit(2);
    }

if(pid==0) //Child
    {
     close(fd[1]);
         gettimeofday(&start, NULL);
         for(i=0;i<size;i++)
        {
         read(fd[0], file, size);
         ch_r+=file;   
        }
         gettimeofday(&end, NULL);
     int time=end.tv_usec-start.tv_usec;
         double speed=size/time;
     printf("Время чтения: %d мкс. Контрольная сумма: %d.\n                 Скорость: %f\n", time, ch_r, speed);
     close(fd[0]);
         free(file);
    }
    else  //Parent
        {
         close(fd[0]);     
         gettimeofday(&start, NULL);
         for(i=0;i<size;i++)
      {
       file=rand();
       ch_w+=file; 
      }
         gettimeofday(&end, NULL);
     int time=end.tv_usec-start.tv_usec;
     double speed=size/time;
         printf("Время записи: %d мкс. Конторольная сумма: %d.\n                 Скорость: %f\n", time,ch_w, speed);
         write(fd[1], file, size);
         close(fd[1]);
         free(file);
     wait(NULL);
    }
   
}

Как измерить время переключения между родительским и дочерним процессом и наоборот?

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог