1. 程式人生 > >執行緒同步和非同步區別 非同步機制

執行緒同步和非同步區別 非同步機制

1 區別同步和非同步
一個程序啟動的多個不相干執行緒,它們相互之間關係為非同步。
舉個簡單的例子 就是遊戲,遊戲會有影象和背景音樂 
影象是由玩家操作的 而背景音樂一般都是迴圈播放玩家不能操作 
這裡的影象和聲音就分別是不同的執行緒   影象一般是主執行緒 背景音樂是守護執行緒(守護執行緒就是主執行緒結束的時候守護執行緒也結束)  像這樣的組合就是非同步執行緒 兩個執行緒之間沒什麼關係各幹各的 
.至於同步的話指的是多執行緒同時操作一個數據 這個時候需要對資料新增保護 這個保護就是執行緒的同步
2 非同步機制
臨界區、互斥區、事件、訊號量四種方式
臨界區(Critical Section)、互斥量(Mutex)、訊號量(Semaphore)、事件(Event)的區別 
1、臨界區:通過對多執行緒的序列化來訪問公共資源或一段程式碼,速度快,適合控制資料訪問。在任意時刻只允許一個執行緒對共享資源進行訪問,如果有多個執行緒試圖訪問公共資源,那麼在有一個執行緒進入後,其他試圖訪問公共資源的執行緒將被掛起,並一直等到進入臨界區的執行緒離開,臨界區在被釋放後,其他執行緒才可以搶佔。 
2、互斥量:採用互斥物件機制。 只有擁有互斥物件的執行緒才有訪問公共資源的許可權,因為互斥物件只有一個,所以能保證公共資源不會同時被多個執行緒訪問。互斥不僅能實現同一應用程式的公共資源安全共享,還能實現不同應用程式的公共資源安全共享 
3、訊號量:它允許多個執行緒在同一時刻訪問同一資源,但是需要限制在同一時刻訪問此資源的最大執行緒數目 
4、事 件: 通過通知操作的方式來保持執行緒的同步,還可以方便實現對多個執行緒的優先順序比較的操作

相關推薦

執行同步非同步區別 非同步機制

1 區別同步和非同步 一個程序啟動的多個不相干執行緒,它們相互之間關係為非同步。 舉個簡單的例子 就是遊戲,遊戲會有影象和背景音樂 影象是由玩家操作的 而背景音樂一般都是迴圈播放玩家不能操作 這裡的影象和聲音就分別是不同的執行緒 影象一般是主執行緒 背景音樂是守護執

Java執行-同步非同步區別

1.                                         &nb

Java --- 執行同步非同步區別

1. Java 執行緒 同步與非同步 多執行緒併發時,多個執行緒同時請求同一個資源,必然導致此資源的資料不安全,A執行緒修改了B執行緒的處理的資料,而B執行緒又修改了A執行緒處理的數理。顯然這是由於全域性資源造成的,有時為了解決此問題,優先考慮使用區域性變數,

java 執行同步非同步

ava執行緒 同步與非同步 執行緒池 1)多執行緒併發時,多個執行緒同時請求同一個資源,必然導致此資源的資料不安全,A執行緒修改了B線 程的處理的資料,而B執行緒又修改了A執行緒處理的數理。顯然這是由於全域性資源造成的,有時為了解 決此問題,優先考慮使用區域性變數,退

Java多執行同步非同步詳解

1. 多執行緒併發時,多個執行緒同時請求同一資源,必然導致此資源的資料不安全。 2. 執行緒池 在WEB服務中,對於web伺服器的響應速度必須儘可能的快,這就容不得在使用者提交請求按鈕後,再建立執行緒提供服務。為了減少使用者的等待時間,執行緒必須預先建立,放線上程池中,執行

執行同步非同步

執行緒同步和執行緒非同步有什麼區別?(重要基礎知識)打個比方,如果你在等一個人,同步的時候,你會一直等到她來了之後才做其他事情,這個過程除了等待你啥都不會做,非同步的時候,你一邊在等,可能一邊玩遊戲或者是看報紙什麼的,一直到她到來,你的等待狀態才會結束在實現上,同步的過程會阻塞程序的所有其他操作,將同步轉換為

執行同步執行安全

執行緒同步 同步就是協同步調,按預定的先後次序進行執行。如:你說完,我再說。 “同”字從字面上容易理解為一起動作,其實不是,“同”字應是指協同、協助、互相配合。 如程序、執行緒同步,可理解為程序或執行緒A和B一塊配合,A執行到一定程度時要依靠B的某個結果,於是停下

執行同步互斥有哪幾種實現方法?

執行緒間的同步方法大體可分為兩類:使用者模式和核心模式。顧名思義,核心模式就是指利用系統核心物件的單一性來進行同步,使用時需要切換核心態與使用者態,而使用者模式就是不需要切換到核心態,只在使用者態完成操作。使用者模式下的方法有:原子操作(例如一個單一的全域性變數),臨界區。核

關於Java多執行執行同步執行通訊的一些小問題(順便分享幾篇高質量的博文)

一、對於執行緒同步和同步鎖的理解(注:分享了三篇高質量的部落格) 以下我精心的挑選了幾篇博文,分別是關於對執行緒同步的理解和如何選擇執行緒鎖以及瞭解執行緒鎖的作用範圍。 <一>執行緒同步鎖的選擇 2. 以上推薦的博文是以賣火車票為例,引出了非同步會導致的錯誤以及同步鎖(監視器)應該如果選擇,

C# 多執行學習(五)執行同步衝突解決

首先先說一個執行緒不同步的例子吧,以下為售票員的模擬售票,多個售票員出售100張門票,程式碼如下: using System; using System.Text; using System.Collections.Generic; using Syste

Java的執行同步併發問題示例

併發問題 多執行緒是一個非常強大的工具,它使我們能夠更好地利用系統的資源,但我們需要在讀取和寫入多個執行緒共享的資料時特別小心。

執行同步非同步鎖的幾種方式

同步鎖:當在一個java虛擬機器多個執行緒操作一個變數的時候就會出現執行緒安全問題,這個時候就會用到同步鎖。 同步鎖的解決方式: 先看下一個執行緒異常的售票 public class ThreadSafe { public static void main(String[] arg

lock Mutex Monitor 之間的區別與詳解, .net 多執行 同步非同步操作,鎖

Framework為我們提供了三個加鎖的機制,分別是Monitor類、Lock關 鍵字和Mutex類。   總體而言,lock和monitor可以鎖定物件,也可以鎖定函式;而mutex一般用於鎖定函式,並保證不同執行緒間同步呼叫函式,而不會受執行緒優先順序影響。使用lo

一個類有兩個方法,其中一個是同步的,另一個是非同步的; 現在又兩個執行AB,請問:當執行A訪問此類的同步方法時,執行B是否能訪問此類的非同步方法?

一個類有兩個方法,其中一個是同步的,另一個是非同步的;現在又兩個執行緒A和B,請問:當執行緒A訪問此類的同步方法時,執行緒B是否能訪問此類的非同步方法? 答案:可以 驗證 package com.my.test2; public class ClassA { public syn

程序/執行同步的方式機制,程序間通訊【轉】

(轉自:https://www.cnblogs.com/virusolf/p/5331946.html) 一、程序/執行緒間同步機制。 臨界區、互斥區、事件、訊號量四種方式臨界區(Critical Section)、互斥量(Mutex)、訊號量(Semaphore)、事件(Event)的區別

FC 10.2 多執行程式設計及Handler訊息非同步處理機制

執行緒的基本用法 在子執行緒中更新UI Handler訊息非同步處理機制 Handler訊息非同步處理個人理解   執行緒用於執行比較耗時的操作。 執行緒的基本用法有三個(常用第三種) 1、新建類繼承Thread,重寫父

Visual C++網路程式設計經典案例詳解 第3章 多執行非同步套接字程式設計 實現執行同步 互斥物件 使用API函式操作互斥物件

互斥物件和臨界區物件和事件物件作用一樣 用於實現執行緒同步 互斥物件可以線上程中使用 CreateMutex()建立並返回互斥物件 原型如下 HANDLE CreateMutex(   LPSECURITY_ATTIRIBUTES lpMutexAttributes,  

Visual C++網路程式設計經典案例詳解 第3章 多執行非同步套接字程式設計 實現執行同步 互斥物件 程式的唯一執行

互斥物件可在程序中使用 使用者在程序建立互斥物件實現程式例項唯一執行 建立控制檯工程 #include<windows.h>                                //包含標頭檔案 #include<stdio.h> in

JAVA多執行機制第四彈:(末篇)執行常用方法總結執行同步

執行緒的常用方法: 這裡我覺得這個老師的教案總結的很舒胡(主要是懶~):  執行緒同步: 在處理多執行緒問題時,有一個Bug問題啊:當兩個或多個執行緒同時訪問一個父類變數時,並且一個執行緒需要修改這個變數,(一個執行緒讓變數A增加,另一個執行緒讓變數A減少)。 所

多程序間通訊方式執行同步機制總結

多程序之間通訊方式:           檔案對映:本地之間           共享記憶體:本地之間           匿名管道:本地之間           命名管道:跨伺服器           郵件槽:一對多的傳輸資料,通常通過網路向一臺Windo