From: Serdar KÖYLÜ (serdarkoylu@fisek.com.tr)
Date: Fri 02 Apr 2004 - 08:44:29 EST
Selamlar..
Olmaz..
Siz main icinde bir degeri degistirmisseniz bu kendi process sapce'iniz
icinde kalir. Sonucta her iki programinizin ayri bellek alani vardir ve
x bu bellek alanlari uzerindedir.
Ama bu bilinen bir sorundur. Yapilmasi gereken, IPC denen mekanizmalari
kullanmaktir. Sizin orneginize en cok uyan ise shared memory, shmem.
Fakat soyle bir durum sozkonusudur. Diyelim ki, bur bir int degilde 10
baytlik bir buffer. Bir process bunu degistirirken sonlanip digeri bunu
okuyabilir. Yani, birisi "123567890" olan buffere "SERDAR" yazarken
"SER4567890" halinde iken tam, is diger process'e verilebilir. O da bu
anda okurken yanlis bilgiyi alip okur. Sonucta bunun adina da race
condition denir ve onlemek icin cok taklalar atmak gerekebilir. Bilinen
hic bir yol her zaman her durumda RACE CONDITION'lari onleyemez. Ama bu
tur bir durumda semaphore kullanimi bir hayli etkili olacaktir.
bakilacak cok man sayfasi var. Ama bu is sadece man okuyarak hallolacak
kadar kolay degildir. Bolca pratik yapip bu konu uzerine yazilmis
dokumanlari okumak gerekiyor. Thread dokumanlari son derece iyi
kaynaklardir.
Saygi ve sevgiler..
> Merhabalar,
>
> 2 farklı çalıştırabilir dosya ortak bir header dosyasını kullanıyor, benim istediğim bu header dosyalarında ki değişkenleri de ortak kullanmaları.
> Çok basit bir örnek vererek açıklamak istiyorum.
> varsayalım
> global.h içinde 'int x' tanımlanmış olsun.
> degerata.c için main içinde x=10 olsun.
> degergoster.c için main içinde 'printf("%d\n",x);' yazsın.
> (*.c dosyalarında #include global.h var, unutmayalım:))
> benim istedim şey degerata programını çalıştırdıkan sonra x degerinin degergoster içinde aynı olması. Yani degerata'dan sonra degergoster'i çalıştırınca ekrana 10 yazsın.
> İkisi aynı projenin dosyaları fakat ikisi de farklı çalıştırılabilir dosyalar.
> Bunu nasıl yapabilirim? gcc'nin bunu yapan bir parametresi mi var? Ya da böyle bir şey olabilir mi?
>
> Herkese İyi Çalışmalar!
> Necati
> ------
>
>
> ---------------------------------
> WIN FREE WORLDWIDE FLIGHTS - nominate a cafe in the Yahoo! Mail Internet Cafe Awards
>
>
>