风炙火舞 风炙火舞
关注数: 9 粉丝数: 130 发帖数: 390 关注贴吧数: 5
Windows平台共享内存源代码 // ShareMemory.cpp : Defines the exported functions for the DLL application. // #include "stdafx.h" #define BufferSize 1024 * 1024 #define FileSize (BufferSize + sizeof(DWORD) * 3) typedef struct { DWORD dwWritePos; DWORD dwReadPos; DWORD dwEndTag; BYTE bData[BufferSize]; }ShareMemory; HANDLE hShare = NULL; HANDLE hEvent = NULL; ShareMemory * pShare = NULL; void __declspec(dllexport) StopShare() { if (pShare && hEvent) { pShare->dwEndTag = 1; ::SetEvent(hEvent); ::Sleep(10); ::WaitForSingleObject(hEvent, 512); } if (hEvent) { CloseHandle(hEvent); hEvent = NULL; } if (pShare) { UnmapViewOfFile(pShare); pShare = NULL; } if (hShare) { CloseHandle(hShare); hShare = NULL; } } bool __declspec(dllexport) StartShare(LPCSTR pShareName) { hShare = OpenFileMappingA(FILE_MAP_ALL_ACCESS, false, pShareName); if (!hShare) { hShare = CreateFileMappingA( INVALID_HANDLE_VALUE, // system paging file NULL, // security attributes PAGE_READWRITE, // protection 0, // high-order DWORD of size FileSize, // low-order DWORD of size pShareName); // name if (!hShare) goto FAILE; } pShare = (ShareMemory *)MapViewOfFile( hShare, // handle to file-mapping object FILE_MAP_WRITE, // desired access 0, 0, 0); // map all file if (!pShare) goto FAILE; char szEventName[512]; szEventName[0] = '\0'; strcat_s(szEventName, 512, "Global\\"); strcat_s(szEventName, 512, pShareName); strcat_s(szEventName, 512, "_Event"); hEvent = OpenEventA(EVENT_ALL_ACCESS, false, szEventName); if (!hEvent) { hEvent = CreateEventA(NULL, false, false, szEventName); if (!hEvent) goto FAILE; } pShare->dwReadPos = pShare->dwWritePos = pShare->dwEndTag = 0; return true; FAILE: StopShare(); return false; } DWORD GetWriteLen(DWORD dwLength) { DWORD dwMax; if (pShare->dwReadPos == 0) dwMax = BufferSize - 1; else if (pShare->dwReadPos > pShare->dwWritePos) dwMax = pShare->dwReadPos - 1; else dwMax = BufferSize; DWORD dwRet = dwMax - pShare->dwWritePos; if (dwRet > dwLength) return dwLength; return dwRet; } // return the left length; DWORD __declspec(dllexport) WriteBlock(BYTE * pData, DWORD dwLength) { DWORD dwWriteMax = 0; while (dwLength != 0) { dwWriteMax = GetWriteLen(dwLength); if (dwWriteMax == 0) break; memcpy(pShare->bData + pShare->dwWritePos, pData, dwWriteMax); dwLength -= dwWriteMax; pData += dwWriteMax; pShare->dwWritePos += dwWriteMax; if (pShare->dwWritePos >= BufferSize) pShare->dwWritePos = 0; ::SetEvent(hEvent); } return dwLength; } DWORD GetReadLen() { if (pShare->dwReadPos < pShare->dwWritePos) return pShare->dwWritePos - pShare->dwReadPos; else if (pShare->dwReadPos > pShare->dwWritePos) return BufferSize - pShare->dwReadPos; else return 0; } bool __declspec(dllexport) WaitForRead() { bool bRet; bRet = ::WaitForSingleObject(hEvent, INFINITE) == WAIT_OBJECT_0; if (bRet) { if (pShare->dwEndTag) return false; } return bRet; } bool __declspec(dllexport) ReadBlock(BYTE ** ppData, DWORD * pdwLength) { *pdwLength = GetReadLen(); if (*pdwLength == 0) return false; *ppData = pShare->bData + pShare->dwReadPos; return true; } void __declspec(dllexport) Readed(DWORD dwLength) { DWORD dwLen = GetReadLen(); if (dwLength <= dwLen) pShare->dwReadPos += dwLength; else pShare->dwReadPos += dwLen; if (pShare->dwReadPos >= BufferSize) pShare->dwReadPos = 0; }
MBA案例 三。西南航空 为了在提供低廉票价的同时,保证公司的盈利水平,西南航打破了老牌航空公司千篇一律的经营模式,建立了一种以重构价值链为基础的竞争战略,西南航空公司通过构建一个本质上与老牌航空公司完全不同的低成本价值链体系,为航空产业打造了一种新的竞争模式,即低成本竞争模式而且由于间接经营活动的减少,使得西南航空公司建立起的这种新的价值链对企业规模的敏感性降低,这就是为什么新兴的西南航空公司能与比它规模大几十倍乃至上百倍的大型骨干航空公司一比高低,并立于不败之地的原因所在 (一)采用单一机型机队 与其他传统的大型航空公司不同,西南航空公司只拥有波音这一种机型,而且公司的客机一律不搞豪华铺张的内装修,机舱内既没有电视也没有耳机"单一机型的做法最大限度地提高了飞机的利用率,即每个飞行员都可以机动地驾驶所有飞机,简化了管理费用,降低了培训、维修和保养的成本"同时,西南航空公司又将飞机大修,保养等非主要业务外包,以达到地勤保障和维护人员的集约化管理的目的" (二)缩短转场时间 西南航空公司的信念是停在地面的飞机不赚钱。因此,西南航空公司在实践中非常重视加快飞机的转场时间,想方设法提高飞机的利用率"西南航空公司每架飞机每天的平均飞行时间是11.5小时其他航空公司波音平均每天为8.6小时,在机场的转场时间为20分钟以内,其中60%的航班在15分钟之内. (三)简化客户服务 选择低价格服务的顾客一般比较节俭,他们乘坐飞机最重要的需求就是能实惠地从一地快速抵达另一地。于是,公司在保证旅客最基本的满意度基础上,尽一切可能地将服务项目化繁为简,降低服务成本"因此,西南航空公司的飞机上不提供正餐服务,只提供花生与饮料"第四,加大直销力度"机票销售成本在传统航空公司成本中占有相当大的比例,一般约占总营运成本的"从年起,西南航空公司就利用互联网技术建立了网上销售平台,相当数量的旅客通过互联网直接订座并采用无票旅行,从而有效地降低了公司的交易费用"现在,网络直销已经成为西南航空公司分销战略中最重要的组成部分。 差异化:西南航空公司 一、寻找准确的市场定位——短途运输市场的切入 首先,采用错位竞争的战略,面对当时的航空市场格局,西南航空公司发现短途航空运输市场的需求还远未得到满足,且具有极大的市场开发潜力,因此,选择了短途运输市场作为切入点,从而与老牌骨干航空公司形成差异化竞争,开辟了一个新的市场经营领域。其次,制定市场细分的战略,西南航空公司将旅客市场分为如下两类一类是以方便为导向的商务旅客,对时间的敏感程度高于对价格的敏感程度,往往希望有大量时间比较合适的航班可供选择"另一类是以价格为导向的休闲旅客,主要关注的是机票价格,对于航班时间则显示出较高的灵活性"对航空公司而言,如果要覆盖整个市场,必须同时能够满足两类旅客的需要"于是西南航空公司的管理层根据市场的实际需要,创造性地设计出商务出差和休闲旅游的两级票价结构和航班结构" 二、航线策略分析 在80年代,西南航空公司都在逐步从位于美国南部的德克萨斯州向西部沿海地区扩张,进入90年代后,西南航空公司开始布局东部扩张战略,进入21世纪之后,西南航空公司又相继在东部的奥尔巴尼!费城等重要城市进行拓展"如今,美国东部地区作为西南航空公司的新兴市场正在迅速崛起"据2005年西南航空公司年报统计,按照地区运力排名,西部地区占据第一,约为43%,东部地区位居第二,约占31%,两者合计占据了74%的市场运力""由此可见,美国西南航空公司空公司的运力主要集中在美国东西两岸,而广大的南部!中部和北部地区则是作为辅助市场,这也与美国经济发展水平和产业空间布局态势基本一致" 目的地机场定位:一线城市和二三线城市互补 在西南航空公司目前开通航班的63个城市中,有近一半是美国一线城市和重要城市。从西南航空公司通航的目的地城市分布结构看,有以下两个重要特点。首先,在西南航空公司已通航的城市中,中部地区以一线城市居多,而东西部地区则以二三线城市见长。以东部地区为例。按照西南航划分的东部地区的23个城市中,仅有8个一线城市。在最繁华的纽约和华盛顿城市群中,西南航空公司提供直飞服务的仅有华盛顿、费城和巴尔的摩三个一线城市,而华盛顿的杜勒斯机场也仅开通3个城市的航线。究其原因,其一,东部地区经济发达,是美国的经济、政治及金融中心,同时也是老牌航空公司,基地所在地。因此,西南航空公司不会在这些航空公司的优势区域与它们展开竞争。其二,由于西南航空公司的主攻市场是对价格敏感的休闲旅客和部分对时间敏感的商务旅客,也就决定了西南航空公司不会与传统的大公司争夺以商务旅客为主的一线城市主流运输市场。其三,尽管西南航空公司立足二三线城市,但是低成本航空服务对于所通航城市周围的机票价格和客流量具有辐射效应。 三、航程制定:以中短程航线为主自创建以来,西南航空公司一直坚持短航程、点对点航线的飞行计划,即班机直接从一个城市飞到另一个城市,避免了大型航空公司传统的辐射式航线网络的低效率束缚,因而能够将飞机延误的可能性降到最低,既缩短了航班的飞行时间,又提高了航班的飞行率和使用率。目前,西南航空公司85%左右的航线都是在750英里左右或更短。2005年,西南航空公司共拥有374个城市的航线,所有航线的平均航程为607英里,平均飞行时间约为1.7小时。在西南航空公司所有旅客中,有79%的人选择的是点对点直达航班。因此,短途运输市场是西南航空公司最主要的航线市场。
1 下一页