Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Nov 2000 18:54:26 +0200
From:      "Dimitar V. Peikov" <mitko@rila.bg>
To:        hackers@freebsd.org
Subject:   pthreads, semaphores and wait
Message-ID:  <200011301654.eAUGsQ517235@earth.rila.bg>

next in thread | raw e-mail | index | archive | help
This is a multipart MIME message.

--==_Exmh_14473280120
Content-Type: text/plain; charset=us-ascii

I've tryed to make some example on using pthreads and semaphores and found 
that process became blocked if inside of critical section use wait, uwait or 
nanowait finctions. In the attached file if change line : (#if 0) to (#if 1) 
the program hangs. I've tested it even with gdb and the threads were blocked 
after wait finction.


--==_Exmh_14473280120
Content-Type: text/plain ; name="broken_wait.c"; charset=us-ascii
Content-Description: broken_wait.c
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="broken_wait.c"

I2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxp
Yi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CgovKiAgcFRocmVhZCBpbmNsdWRlcyAqLwojaW5j
bHVkZSA8cHRocmVhZC5oPgoKLyogIElQQyBzZW1hcGhvcmVzIGluY2x1ZGVzICovCiNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9pcGMuaD4KI2luY2x1ZGUgPHN5cy9z
ZW0uaD4KCmV4dGVybiBpbnQgZXJybm87CmludCBjb21tb24gPSAwOwppbnQgY29tbW9uX3No
YXJlZF9pZCA9IDA7CmNoYXIgKmNvbW1vbl9wb2ludGVyID0gTlVMTDsKaW50IHNlbWFwaG9y
ZV9pZCA9IDA7CgppbnQgcHRocmVhZF9zZW1hcGhvcmVzKGNoYXIgKnMpIHsKICBpbnQgaW50
ZXJuYWwgPSBjb21tb247CiAgc3RydWN0IHNlbWJ1ZiBzZW1fYnVmOwogIGludCBzZW1fdmFs
ID0gMDsKCi8qICBMb2NrIHNlbWFwaG9yZSAwICovCiAgc2VtX2J1Zi5zZW1fbnVtID0gMDsK
ICBzZW1fYnVmLnNlbV9vcCA9IC0xOwogIHNlbV9idWYuc2VtX2ZsZyA9IDA7CiAgaWYgKChz
ZW1fdmFsID0gc2Vtb3Aoc2VtYXBob3JlX2lkLCAmc2VtX2J1ZiwgMSkpID09IC0xKSB7CiAg
ICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGxvY2sgc2VtYXBob3JlOiAlc1xuIiwgc3RyZXJy
b3IoZXJybm8pKTsKICAgIHJldHVybiAtMTsKICB9CgovKiAgR2V0IGN1cnJlbnQgdmFsdWUg
b2YgdGhlIGZpcnN0IHNlbWFwaG9yZSAqLwogIGlmICgoc2VtX3ZhbCA9IHNlbWN0bChzZW1h
cGhvcmVfaWQsIDAsIEdFVFZBTCkpID09IC0xKSB7CiAgICBmcHJpbnRmKHN0ZGVyciwgIkVy
cm9yIGFsbG9jYXRpbmcgc2VtYXBob3JlOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKICAg
IHJldHVybiAtMTsKICB9CgovKiAgRG8gc29tZXRoaW5nIC4uLiAqLwogIGNvbW1vbl9wb2lu
dGVyID0gKGNoYXIgKikgbWFsbG9jKHN0cmxlbihzKSArIDEpOwogIHN0cmNweShjb21tb25f
cG9pbnRlciwgcyk7CiAgZnByaW50ZihzdGRlcnIsICJFbnRlciBzZW1hcGhvcmUgJXVcbiIs
IGNvbW1vbisrKTsKCiNpZiAwCiAgICBzbGVlcCgxKTsKI2VuZGlmCgogIGZwcmludGYoc3Rk
ZXJyLCAiTGVhdmUgc2VtYXBob3JlICV1XG4iLCBpbnRlcm5hbCk7CgogIHNlbV9idWYuc2Vt
X251bSA9IDA7CiAgc2VtX2J1Zi5zZW1fb3AgPSAxOwogIHNlbV9idWYuc2VtX2ZsZyA9IDA7
CiAgaWYgKChzZW1fdmFsID0gc2Vtb3Aoc2VtYXBob3JlX2lkLCAmc2VtX2J1ZiwgMSkpID09
IC0xKSB7CiAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGxvY2sgc2VtYXBob3JlOiAlc1xu
Iiwgc3RyZXJyb3IoZXJybm8pKTsKICAgIHJldHVybiAtMTsKICB9CiAgcmV0dXJuIDA7Cn0K
CmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogIHB0aHJlYWRfdCB0aHJbNF07
CiAgaW50IHJldGNvZGUgPSAwOwogIGludCBzZW1fdmFsOwoKLyogIEV4YW1wbGUgdXNpbmcg
c2VtYXBob3JlcyAqLwovKiAgQ3JlYXRlIHNlbWFwaG9yZSAqLwogIGlmICgoc2VtYXBob3Jl
X2lkID0gc2VtZ2V0KElQQ19QUklWQVRFLCAxLCBTRU1fUiB8IFNFTV9BKSkgPT0gLTEpIHsK
ICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgYWxsb2NhdGluZyBzZW1hcGhvcmU6ICVzXG4i
LCBzdHJlcnJvcihlcnJubykpOwogICAgcmV0dXJuIC0xOwogIH0KCi8qICBBc3NpZ24gdmFs
dWUgdG8gdGhlIGZpcnN0IHNlbWFwaG9yZSAqLwogIGlmICgoc2VtX3ZhbCA9IHNlbWN0bChz
ZW1hcGhvcmVfaWQsIDAsIFNFVFZBTCwgMSkpID09IC0xKSB7CiAgICBmcHJpbnRmKHN0ZGVy
ciwgIkVycm9yIGFsbG9jYXRpbmcgc2VtYXBob3JlOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8p
KTsKICAgIHJldHVybiAtMTsKICB9CgovKiAgR2V0IGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZp
cnN0IHNlbWFwaG9yZSAqLwogIGlmICgoc2VtX3ZhbCA9IHNlbWN0bChzZW1hcGhvcmVfaWQs
IDAsIEdFVFZBTCkpID09IC0xKSB7CiAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGFsbG9j
YXRpbmcgc2VtYXBob3JlOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKICAgIHJldHVybiAt
MTsKICB9CgovKiAgQ3JlYXRlIHB0aHJlYWRzICovCiAgcHRocmVhZF9jcmVhdGUoJnRoclsw
XSwgTlVMTCwgKHZvaWQgKigqKSh2b2lkICopKXB0aHJlYWRfc2VtYXBob3JlcywgYXJndlsw
XSk7CiAgcHRocmVhZF9jcmVhdGUoJnRoclsxXSwgTlVMTCwgKHZvaWQgKigqKSh2b2lkICop
KXB0aHJlYWRfc2VtYXBob3JlcywgYXJndlswXSk7CiAgcHRocmVhZF9qb2luKHRoclswXSwg
KHZvaWQgKikgJnJldGNvZGUpOwoKLyogIFJlbW92ZSBzZW1hcGhvcmUgKi8KICBpZiAoc2Vt
Y3RsKHNlbWFwaG9yZV9pZCwgSVBDX1JNSUQsIE5VTEwpID09IC0xKSB7CiAgICBmcHJpbnRm
KHN0ZGVyciwgIkVycm9yIHJlbW92aW5nIHNlbWFwaG9yZTogJXNcbiIsIHN0cmVycm9yKGVy
cm5vKSk7CiAgICByZXR1cm4gLTE7CiAgfQoKICBmcHJpbnRmKHN0ZGVyciwgIkRvbmUhXG4i
KTsKICByZXR1cm4gMDsKfQo=

--==_Exmh_14473280120
Content-Type: text/plain; charset=us-ascii

Dimitar Peikov
Programmer Analyst
"We Build e-Business"  

RILA Solutions  
27 Building, Acad.G.Bonchev Str.  
1113 Sofia, Bulgaria  
home:  (+359 2)  595495
phone: (+359 2) 9797320 
phone: (+359 2) 9797300 
fax:   (+359 2) 9733355  
http://www.rila.com 

--==_Exmh_14473280120--




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200011301654.eAUGsQ517235>