OSDN Git Service

SDL_CreateThread サンプルコードを修正 https://wiki.libsdl.org/SDL_CreateThread?action=diff...
[sdl2referencejp/sdl2referencejp.git] / SDL_CreateSemaphore.html
index ee4af1f..d71bec0 100644 (file)
 <h2>\96ß\82è\92l</h2>\r
 \90V\82µ\82¢\83Z\83}\83t\83H\82ð\96ß\82·. \8e¸\94s\82Ì\82Æ\82«NULL\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+\83Z\83}\83t\83H\82Ì\93T\8c^\93I\82È\8eg\82¢\95û:\r
+<code>\r
+<pre>\r
+SDL_atomic_t done;\r
+SDL_sem *sem;\r
+\r
+SDL_AtomicSet(&amp;done, 0);\r
+sem = SDL_CreateSemaphore(0);\r
+.\r
+.\r
+Thread A:\r
+    while (!SDL_AtomicGet(&amp;done)) {\r
+        add_data_to_queue();\r
+        SDL_SemPost(sem);\r
+    }\r
+\r
+Thread B:\r
+    while (!SDL_AtomicGet(&amp;done)) {\r
+        SDL_SemWait(sem);\r
+        if (data_available()) {\r
+            get_data_from_queue();\r
+        }\r
+    }\r
+.\r
+.\r
+SDL_AtomicSet(&amp;done, 1);\r
+SDL_SemPost(sem);\r
+wait_for_threads();\r
+SDL_DestroySemaphore(sem);\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 \82±\82Ì\8aÖ\90\94\82Í\90V\82µ\82¢\83Z\83}\83t\83H\82ð\90\90¬\82µ, initial_value\82Ì\92l\82Å\8f\89\8aú\89»\82·\82é.\r
-\83Z\83}\83t\83H\82Ì\91Ò\8b@\91\80\8dì\82Å\83A\83g\83~\83b\83N(\95s\89Â\95ª)\82É\83Z\83}\83t\83H\82Ì\92l\82ð\8c¸\8eZ\82·\82é. \82à\82µ\83Z\83}\83t\83H\82Ì\92l\82ª0\82È\82ç\82Î\91Ò\8b@\82·\82é.\r
-\92Ê\92m\91\80\8dì\82Å\83A\83g\83~\83b\83N\82É\83Z\83}\83t\83H\82Ì\92l\82ð\89Á\8eZ\82µ, \91Ò\8b@\92\86\82Ì\83X\83\8c\83b\83h\82ð\8dÄ\8aJ\82µ, \82»\82ê\82ç\82ª\8dÄ\82Ñ\91Ò\8b@\91\80\8dì\82ð\82·\82é\82±\82Æ\82ð\8b\96\89Â\82·\82é.\r
+\83Z\83}\83t\83H\82Ì\91Ò\8b@\91\80\8dì\82Å\83A\83g\83~\83b\83N(\95s\89Â\95ª)\82É\83Z\83}\83t\83H\82Ì\92l\82ð1\8c¸\8eZ\82·\82é. \82à\82µ\83Z\83}\83t\83H\82Ì\92l\82ª0\82È\82ç\82Î\91Ò\8b@\82·\82é.\r
+\92Ê\92m\91\80\8dì\82Å\83A\83g\83~\83b\83N\82É\83Z\83}\83t\83H\82Ì\92l\82ð1\89Á\8eZ\82µ, \91Ò\8b@\92\86\82Ì\83X\83\8c\83b\83h\82ð\8dÄ\8aJ\82µ, \82»\82ê\82ç\82ª\8dÄ\82Ñ\91Ò\8b@\91\80\8dì\82ð\82·\82é\82±\82Æ\82ð\8b\96\89Â\82·\82é.\r
 <h2>\8aÖ\98A\8d\80\96Ú(\8aÖ\90\94)</h2>\r
 <a href="SDL_DestroySemaphore.html">SDL_DestroySemaphore</a><br>\r
 <a href="SDL_SemPost.html">SDL_SemPost</a><br>\r