Модераторы: Alx, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Процессы и семафоры 
:(
    Опции темы
toshun
Дата 18.12.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 10.2.2006

Репутация: нет
Всего: нет



Задача такая: Запустить в случайном порядке 10 процессов, каждый из которых выводит цифру от 0 до 9. С помощью средств синхронизации добиться, чтобы все цифры были выведены в одной строке в порядке возрастания.

#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/mman.h>
#include<fcntl.h>
#include<stdio.h>
#include<stdlib.h>
int rand(void);
int control(int M[10], int a);
void init(int M[10]);
pid_t fork (void);
int segment(key_t, int nsems, int flags);

main(int argc, char *argv[])
{
    int fd;
    int k=fork(),i=0,a=0;
    caddr_t addr_1;
    fd=open("file",O_RDWR);
    addr_1=mmap((caddr_t)0, sizeof(int), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
    for(i=0;i!=10;i++)
    {    
        if(k==0)
        {
            a=rand()%10;
        }
    }
}

А вот как с помощью семафоров можно вывести на экран числа в порядке возрастания непонятно(под средством синфронизации я понял семафор, если нет, поправьте пожалуйста)
PM MAIL   Вверх
PPS05
Дата 21.12.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

Репутация: нет
Всего: 7



Первое, что приходит в голову - перебирать все цифры от 0 до 9, пока соответствующий семафор не будет в сигнальном состоянии. Как нашли - выводим эту цифру и меняем состояние.


--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.