C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C言語でPOSIXセマフォを使用する方法


セマフォは、プロセスまたはスレッドの同期の概念です。ここでは、実際のプログラムでセマフォを使用する方法を説明します。

Linuxシステムでは、POSIXセマフォアライブラリを取得できます。これを使用するには、semaphores.hライブラリを含める必要があります。次のオプションを使用してコードをコンパイルする必要があります。

gcc program_name.c –lpthread -lrt

sem_wait()を使用して、ロックまたは待機できます。そして、sem_post()でロックを解除します。セマフォは、プロセス間通信(IPC)のsem_init()またはsem_open()を初期化します。

#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
#include <unistd.h>
sem_t mutex;
void* thread(void* arg) { //function which act like thread
   sem_wait(&mutex); //wait state
   printf("\nEntered into the Critical Section..\n");
   sleep(3); //critical section
   printf("\nCompleted...\n"); //comming out from Critical section
   sem_post(&mutex);
}
main() {
   sem_init(&mutex, 0, 1);
   pthread_t th1,th2;
   pthread_create(&th1,NULL,thread,NULL);
   sleep(2);
   pthread_create(&th2,NULL,thread,NULL);
   //Join threads with the main thread
   pthread_join(th1,NULL);
   pthread_join(th2,NULL);
   sem_destroy(&mutex);
}

出力

soumyadeep@soumyadeep-VirtualBox:~/Cpp_progs$ gcc 1270.posix_semaphore.c -lpthread -lrt
1270.posix_semaphore.c:19:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
main() {
^~~~
soumyadeep@soumyadeep-VirtualBox:~/Cpp_progs$ ./a.out

Entered into the Critical Section..

Completed...

Entered into the Critical Section..

Completed...
soumyadeep@soumyadeep-VirtualBox:~/Cpp_progs$

  1. GoogleスプレッドシートでGoogle翻訳を使用する方法

    Google翻訳は、新しい言語を学ぶときに便利なツールです。 Google翻訳アプリでは、言語の識別やカメラを使用した標識の翻訳など、さまざまなオプションを利用できます。 Sheetsなどの他のGoogleサービスでGoogle翻訳を使用することもできます。セルに簡単なコードを挿入することで、任意の言語を別の言語に翻訳できます。それがどのように行われるか見てみましょう。 Googleスプレッドシートの任意の言語を翻訳する Google翻訳を使用するには、Googleスプレッドシートを開き、翻訳する単語を任意のセルに入力します。たとえば、セルA1に「cat」という単語を入力します。セルをクリッ

  2. Rubyスレッドの使用方法:わかりやすいチュートリアル

    Rubyのスレッドとは何ですか? スレッドにより、Rubyプログラムは同時に複数のことを実行できます。 次のようなもの : 複数のファイルを読み取る 複数のウェブリクエストの処理 複数のAPI接続を確立する スレッドを使用した結果、マルチスレッドのRubyプログラムが作成され、作業をより迅速に行うことができます。 しかし、1つの警告… Rubyアプリケーションを実行するデフォルトの方法であるMRI(MatzのRuby Interpreter)では、 i/oバウンドアプリケーションを実行する場合にのみスレッドの恩恵を受けます。 。 この制限は、 GIL(グローバルインタープリター