成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

FileZilla 源代碼分析3

系統 Linux
FileZilla是一個免費開源的FTP客戶端軟件,分為客戶端版本和服務器版本,具備所有的FTP軟件功能??煽匦?、有條理的界面和管理多站點的簡化方式使得Filezilla客戶端版成為一個方便高效的FTP客戶端工具,而FileZilla Server則是一個小巧并且可靠的支持FTP&SFTP的FTP服務器軟件。

FileZilla是一種快速、可信賴的FTP客戶端以及服務器端開放源代碼程式,具有多種特色、直覺的接口。本文就給大家分析下FileZilla的源代碼。

  < type="text/javascript"> < src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> < type="text/javascript"> < src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">

  win32同步控制機制(Synchronization)回顧

  1、Critical Sections(關鍵域)

  最簡單的一種同步機制,創建和銷毀的函數是:

  InitializeCriticalSection()

  DeleteCriticalSection()

  在被創建后,使用如下函數實現線程同步,

  EnterCritSection()

  ... 需要同步的代碼

  LeaveCritSection()

  即在同一時間內,EnterCritSection和LeaveCritSection中間的代碼只能被一個線程處理。注意的問題是:

  Critical Sections類型的變量并不是一個核心對象,即沒有handle;

  它存在于進程的內存空間中,即不可跨進程使用;

  可能會導致死鎖;

  2、Mutexes(互斥器)

  創建和銷毀的函數是:

  CreateMutex()

  CloseHandle()

  如果Mutex已經被創建,這樣打開和關閉:

  OpenMutex()

  ReleaseMutex()

  使用的時候,用wait函數來等待Mutex,一旦沒有線程擁有這個Mutex,這個線程就會獲得這個Mutex,在這個線程處理完以后,調用ReleaseMutex()可以釋放這個Mutex,其它等待中的線程就會重新競爭這個Mutex,同時只能有一個線程獲得這個Mutex,沒競爭到的線程則處于blocking阻塞狀態。常見的wait函數有:

  WaitForSingleObject() // 等待一個mutex

  WaitForMultipleObjects() // 同時等待多個mutex,要不同時擁有多個,要不一個也沒有

  和Critical Sections相比,mutex是一個核心對象,因此是跨進程的,即多個進程可以使用同一個mutex,并且CreateMutex()的開銷比InitializeCriticalSection()要大得多。

  相比而言,mutex更重量級,更慢,但也更靈活。

  3、信號量(Semaphores)

  創建和銷毀的函數是:

  CreateSemaphore()

  CloseHandle()

  獲取這個Semaphore的函數同樣是那些wait函數WaitForSingleObject(), WaitForMultipleObjects()等等。

  使用Semaphores的含義是:Semaphores可以同時被多個線程擁有,但在CreateSemaphore()時會指定一個同時擁有這個Semaphore的***線程數,即每個線程調用wait函數獲取Semaphore時,Semaphore內部的可用值就會減1,一旦可用值為0,則線程必須等待。當擁到Semaphore的線程運行完后,也應該調用ReleaseSemaphore()來釋放。

  同Mutexes不一樣的是,調用ReleaseSemaphore()的線程并一定是調用wait并獲得擁有權的那個線程,即任何線程都可以在任何時間調用ReleaseSemaphore()來解除被任何線程鎖定的Semaphore。

  在某種意義上,Mutexes可以看成是Semaphore的一個特例,即只能同時被一個線程鎖定的Semaphore。

  Semaphore也是核心對象。

  4、事件(Event Objects)

  win32中最靈活的應該是events了,它也是一種核心對象。

  events的含義在于:events有兩種狀態,激活和非激活,在events被激活時,那些等待著的線程會被喚醒。

  創建和銷毀的函數是:

  CreateEvent(),創建時可以指定events是manual或automatic,manual的含義是events的狀態是由程序員設定的。automatic的含義是events變成激話后,立即自動變成非激活。

  CloseHandle()

  獲取這個events的函數同樣是那些wait函數WaitForSingleObject(), WaitForMultipleObjects()等等。

  下面三個方法可以改變events的狀態:

  SetEvent(): 把events設為激活

  ResetEvent(): 把events設為非激活

  PulseEvent(): 激活events,然后立即高為非激活。如果events是manual的,則喚醒所有等待的線程,如果events是automatic的,同喚醒“一個”等待的線程。

  注意,如果event是manual時,這時調用SetEvent后,如果不調用ResetEvent,則等待中的線程會被不斷的喚醒,即不斷地執行CreateThread時指定的lpStartAddress方法。

  還有一點,windows系統可以保證被喚醒的線程是一個接著一個的,即不會有的線程總是被喚醒,而有些線程被餓死。

  < type="text/javascript"> < src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">

通過文章完整的描述,大家應該知道了FileZilla 源代碼,希望對大家有幫助!

【編輯推薦】

  1. FileZilla 源代碼分析1
  2. FileZilla 源代碼分析2
  3. FileZilla簡單介紹
  4. FileZilla:免費的服務器軟件
  5. FileZilla 3.3.1.0新版升級 修復bug
  6. FileZilla FTP 客戶端硬編碼的密碼索引關鍵漏洞
  7. FileZilla Server
責任編輯:趙鵬 來源: 網絡轉載
相關推薦

2011-02-23 14:46:21

FileZilla

2011-02-23 14:54:58

FileZilla

2011-02-23 14:16:43

FileZilla

2011-02-23 14:39:27

FileZilla

2011-02-23 15:33:42

FileZilla

2011-02-23 15:26:01

FileZilla

2011-02-23 13:47:33

FileZilla

2011-02-23 15:21:06

FileZilla

2011-02-23 15:11:27

FileZilla

2011-03-01 16:32:58

FileZilla

2011-03-01 16:19:27

FileZilla

2011-03-01 16:01:08

FileZilla

2011-03-01 16:25:37

FileZilla

2015-08-28 09:38:51

Linux源代碼分析工具

2018-05-25 14:16:55

NFS源代碼線程

2015-08-26 17:38:47

Linux源代碼

2009-07-02 13:59:35

JSP后臺

2011-08-24 15:42:38

LUA源代碼

2020-02-24 09:25:33

代碼開發工具

2011-08-24 16:24:54

Lua源代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美久久久久 | 欧美色a v | 日韩中文字幕 | 国产精品国产成人国产三级 | 91精品国产综合久久精品 | 国产一区免费视频 | 婷婷久久久久 | 一区二区三区韩国 | 国产乱一区二区三区视频 | 毛片黄片 | 午夜精品久久久久久久星辰影院 | 久久国产免费 | 成人精品在线观看 | 欧洲亚洲视频 | 日本成人综合 | 欧美日韩在线成人 | 亚洲精品在线观看网站 | 精品一区av| 欧美在线视频网 | 欧美最猛黑人xxxx黑人 | 亚洲精品在线视频 | 国产成人综合在线 | 亚洲巨乳自拍在线视频 | 在线午夜 | 成人免费视频久久 | 亚洲精色 | 欧美a级成人淫片免费看 | 亚洲在线 | 免费看爱爱视频 | 日本中文在线 | 欧美国产日韩在线观看成人 | 亚洲成人三级 | 毛片一区 | 日本高清aⅴ毛片免费 | 午夜一级大片 | 亚洲免费成人av | 中文在线а√在线8 | 日韩在线免费视频 | 一区二区三区欧美在线观看 | 色香婷婷 | 日韩高清中文字幕 |