美文网首页
GoLang并发编程3

GoLang并发编程3

作者: 同人于野_2068 | 来源:发表于2019-04-26 17:00 被阅读0次

并发编程有两个模式

  • 共享内存
  • 消息

共享内存,以C语言举例

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void *count();
// 信号量 互斥锁
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; 
int counter = 0;

main() {
    int rc1, rc2;
    pthread_t thread1, thread2;
  
    /* 创建线程,每个线程独立执行函数functionC */
    if((rc1 = pthread_create(&thread1, NULL, &count, NULL))) {
            printf("Thread creation failed: %d\n", rc1);
    }
    if((rc2 = pthread_create(&thread2, NULL, &count, NULL))) {
            printf("Thread creation failed: %d\n", rc2);
    }
    
    /* 等待所有线程执行完毕 */ 
    pthread_join( thread1, NULL);  
    pthread_join( thread2, NULL);
    exit(0); 
  }

void *count() {
    // 拿到锁
    pthread_mutex_lock( &mutex1 );
    counter++;
    printf("Counter value: %d\n",counter);
    // 释放锁
    pthread_mutex_unlock( &mutex1 );
}

换成 GoLang

  package main
import "fmt" 
import "sync" 
import "runtime"

var counter int = 0

func Count(lock *sync.Mutex) { 
  lock.Lock()
  counter++
  fmt.Println(z)
  lock.Unlock()
}

func main() {
  // 互斥锁
  lock := &sync.Mutex{}
  
  for i := 0; i < 10; i++ {
    go Count(lock)
  }

  for { 
    lock.Lock()
    c := counter
    lock.Unlock()
    runtime.Gosched() 
    if c >= 10 {
      break
    } 
  }
}

相关文章

  • GoLang并发编程3

    并发编程有两个模式 共享内存 消息 共享内存,以C语言举例 换成 GoLang

  • Golang的并发编程

    golang是为并发而生的语言。优雅的并发编程范式,完善的并发支持,出色的并发性能是golang区别于其他语言的一...

  • Golang的并发编程

    Golang中的并发编程 Golang语言中,并发使用的协程的机制,实现起来也是十分的方便,使用go关键字即可。 ...

  • Golang并发编程

    Go 语言简介(下)— 特性 并发不是并行Go负载均衡 一个Go例程(Goroutines)就是一个和其它Go例程...

  • Golang并发编程

    在Go语言中,语言本身就已经实现和支持了并发, 我们只需要通过go关键字来开启goroutine即可。 gouro...

  • golang并发编程

    https://go101.org/article/channel-use-cases.html https://...

  • 【转载】Golang处理大数据时使用高效的Pipeline(流水

    并发是件技术活 Golang被证明非常适合并发编程,goroutine比异步编程更易读、优雅、高效。本文提出一个适...

  • Go编程基础(介绍和安装)

    Go(又称Golang[3])是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。来...

  • Go goroutine

    Golang特色之一是支持高并发编程模型,以Goroutine作为基本的并发执行单元。 Goroutine是轻量级...

  • Golang之并发编程一

    并发基础 在说Golang的并发编程之前,先认识一下目前并发的几种实现方式: 1.多进程。操作系统实现的并发模型,...

网友评论

      本文标题:GoLang并发编程3

      本文链接:https://www.haomeiwen.com/subject/sevfnqtx.html