[vlc-devel] [PATCH 1/6] os2: implement vlc_once()

Kamil Rytarowski n54 at gmx.com
Mon Apr 2 11:28:59 CEST 2018


On 02.04.2018 08:58, Rémi Denis-Courmont wrote:
> Le lundi 2 avril 2018, 03:20:25 EEST Kamil Rytarowski a écrit :
>> Just follow an existing approach like in NetBSD:
>>
>>      53 int
>>      54 pthread_once(pthread_once_t *once_control, void (*routine)(void))
>>      55 {
>>      56 	if (__predict_false(__uselibcstub))
>>      57 		return __libc_thr_once_stub(once_control, routine);
>>      58
>>      59 	if (once_control->pto_done == 0) {
>>      60 		pthread_mutex_lock(&once_control->pto_mutex);
>>      61 		pthread_cleanup_push(&once_cleanup, &once_control->pto_mutex);
>>      62 		if (once_control->pto_done == 0) {
>>      63 			routine();
>>      64 			once_control->pto_done = 1;
>>      65 		}
>>      66 		pthread_cleanup_pop(1);
>>      67 	}
>>      68
>>      69 	return 0;
>>      70 }
>>
>> https://nxr.netbsd.org/xref/src/lib/libpthread/pthread_once.c#54
> 
> This violates the memory model just like the first proposal.
> 

Please elaborate.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 850 bytes
Desc: OpenPGP digital signature
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20180402/2f1431e3/attachment.sig>


More information about the vlc-devel mailing list