2021-11-02

虚拟机的创建

		都说百度很强大,应有尽有,这一点真的是棒棒的,今天是写博客的第一天,既然编程都是helloword开始的,那我就从安装虚拟机开始吧,写项目环境必须要准备,大家说是吧,有qian的可以选择阿里云,腾讯云,华为云等相关服务器,废话不多说了,我们是我们的虚拟机操作;

一:安装虚拟机的前期工作
1、下载虚拟机网站 这里我们推荐使用VirtualBox 这个是我个人认为比较好用的一款虚拟机软件
网址为 https://www.virtualbox.org/
2.下载vagrant 软件,这个是操作虚拟机的操作工具,这个全靠命令实现,用过苹果电脑的基本上都应该习惯上命令的使用吧,废话不多说,下载地址为:https://www.vagrantup.com/添加链接描述

这样我们软件基本装完了,基本的虚拟环境也搭建成功了 ,但是尽量不要装在c盘,具体什么原因,我想小伙伴们都知道什么原因;

二:镜像下载
软件全部安装好了,那我们就需要安装镜像了,之所以安装vagrant 因为这个软件可以快速让我们安装虚拟机,以及启动相关虚拟机相关操作,废话不多少,上命令;

首先初始化镜像 vagrant init centos/7
其次,vagrant up 相当于初始化刚刚初始化的系统,这样我们一台虚拟的电脑全部创建完成了,这里,我需要提一下,我们创建的时候会生成一个Vagrantfile 这个文件,我们需要把里面的ip地址放开,在这里插入图片描述
这样我们的虚拟机就完整创建了;

vagrant 常用命令如下:
1、检查当前的版本

  vagrant --version

2、列出所有的box

  vagrant box list

3、添加一个box

  vagrant box add ADDRESS

4、启动VM

  vagrant up

5、启用SSH登陆VM

  vagrant ssh

6、关闭VM

  vagrant halt

7、销毁VM

vagrant destory [name|id]     慎用

其他相关信息参考vagrant官方网站 添加链接描述https://www.vagrantup.com/docs/installation/uninstallation

第一天的博客就到这里吧,明天我们说以先docker相关操作,以及使用docker的相关命令下载各种软件,方便我们的搭建以及学习

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生产者消费者问题是一个经典的同步问题,其中生产者和消费者共享一个缓冲区,生产者向缓冲区中生产产品,消费者从缓冲区中消费产品。在多线程的环境下,生产者和消费者可能会同时访问缓冲区,因此需要对缓冲区进行同步控制。 以下是一个简单的生产者消费者问题的实现: ```c #include <stdio.h> #include <stdlib.h> #include <pthread.h> #define BUFFER_SIZE 10 int buffer[BUFFER_SIZE]; int count = 0; int in = 0; int out = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t empty = PTHREAD_COND_INITIALIZER; pthread_cond_t full = PTHREAD_COND_INITIALIZER; void *producer(void *arg) { int i; for (i = 0; i < 20; i++) { pthread_mutex_lock(&mutex); while (count == BUFFER_SIZE) { pthread_cond_wait(&empty, &mutex); } buffer[in] = i; in = (in + 1) % BUFFER_SIZE; count++; printf("producer: produced %d\n", i); pthread_cond_signal(&full); pthread_mutex_unlock(&mutex); } pthread_exit(NULL); } void *consumer(void *arg) { int i, data; for (i = 0; i < 20; i++) { pthread_mutex_lock(&mutex); while (count == 0) { pthread_cond_wait(&full, &mutex); } data = buffer[out]; out = (out + 1) % BUFFER_SIZE; count--; printf("consumer: consumed %d\n", data); pthread_cond_signal(&empty); pthread_mutex_unlock(&mutex); } pthread_exit(NULL); } int main() { pthread_t tid1, tid2; pthread_create(&tid1, NULL, producer, NULL); pthread_create(&tid2, NULL, consumer, NULL); pthread_join(tid1, NULL); pthread_join(tid2, NULL); return 0; } ``` 在代码中,我们定义了一个大小为10的缓冲区,使用一个计数器count来记录缓冲区中产品的数量,in和out分别表示生产者和消费者在缓冲区中的位置。我们使用了两个条件变量empty和full来控制生产者消费者的同步。 在生产者中,当缓冲区已满时,生产者会等待empty条件变量,直到缓冲区有空位。当生产者生产完一个产品后,会唤醒消费者,并释放互斥锁。 在消费者中,当缓冲区为空时,消费者会等待full条件变量,直到缓冲区有产品。当消费者消费完一个产品后,会唤醒生产者,并释放互斥锁。 通过使用互斥锁和条件变量,我们可以保证生产者和消费者的正确同步,避免了竞争条件和死锁等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值