мне надо задать область действия конкуренции и состояние отсоединения под FreeBSD я пользуюсь pthread_attr_t attr = PTHREAD_CREATE_JOINABLE | PTHREAD_SCOPE_PROCESS; под linuxom pthread_attr_t attr это не структура а указатель и я не могу задать оба эти параметра
нет ненадо !
тоесть он передает не указатель переменной а саму переменныю
(void *) i; а потом перобразует обратно
int=(int) i ;
ну вобщем на 32 разрядах указатель этоо 32 разряда и int тоже 32 разряда
тоесть все OK ! вот ежели так попробовать передать long int IMXO неполучится !
А вот насчет других платформ незнаю тоесть ежели ты собрался проверить
работает ли это на солярке то ставь солярку и смотри как оно ! а еще
лучше с процом на 32 и 64 разряда ! Сделать приладу многоплотформенной
незная как работает другая платформа сложновато !
2Aleks IZA: Это понятно, но я не о том. Что произойдет если один поток будет изменять значение переменной, а другой в это время ее читать? Я стараюсь исключить такие ситуации, используя mutex'ы. Не зря ли я это делаю? На платформе intel вроде бы все нормально, но что будет на SPARC, Alpha, MIPS? У меня все компьютеры однопроцессорные (процессоры нынче дороги, особенно такие), так что проверить не на чем.
ой чета я прогнал непомотремши ! про i писал !
>Будет ли вариант без mutex'ов корректно работать на всех платформах?
В примере run используется для киляния всех нитей !!! Поэтому
нетрашно пусть читают из того куда пишется ! ежели run!=0 то exit
Это простой симпл пример но интересный :-)))))
Никто негарантирует что последние thread-ы c символами ... x y z
успеют сделать printf до выхода из процесса exit() ! так как параллельные
процессы да еще thread kernel-level выполняются с разными скоростями да
еще на разных процессорах ! Тут "hoopoe " ставит sleep надеясь что
за время sleep нитка успеет чегонить напечатать !
Поробуй убрать sleep ! и использовать синхронизацию mutex чтобы гарантировать
что каждая нить успеетсделать хотябы раз printf но оставь
возможность thread-ам печатать каждую 1- секунду !
у меня сегодня мозги заняты ! Рисуй сюда посмотрим :-)
Я хотел сказать, что для синхронизации завершения процессов вроде удобнее пользоваться pthread_join(), чем sleep(). Просто придется хранить еще массив pthread_t.