在Visual Studio环境下。 写一个实验在 Windows 下用 Java(C++)语言编程,利用信号量操作实现进程(线程) 同步的实验小结
时间: 2023-06-02 13:08:06 浏览: 211
这是一个技术问题,我可以回答。在 Visual Studio 环境下,你可以使用 C 语言编写实现信号量操作的程序。下面是一个简单的例子:
```
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <semaphore.h>
sem_t sem;
void *thread_func(void *arg)
{
sem_wait(&sem); // 等待信号量被触发
printf("Thread waiting for semaphore\n");
sem_post(&sem); // 触发信号量
return NULL;
}
int main()
{
pthread_t thread;
sem_init(&sem, 0, 0); // 初始化信号量,初始值为 0
pthread_create(&thread, NULL, &thread_func, NULL);
printf("Main thread waiting for 5 seconds...\n");
sleep(5);
sem_post(&sem); // 触发信号量
pthread_join(thread, NULL);
sem_destroy(&sem); // 销毁信号量
return 0;
}
```
该程序创建了一个线程,等待信号量被触发。主线程在等待 5 秒后触发信号量。在信号量被触发后,线程输出一条信息。注意,在使用信号量操作时,要确保在使用 sem_wait 等等待操作之前先初始化信号量并设置初始值。在程序结束时,要销毁信号量。
阅读全文