91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

1)、用兩個線程a和b來模擬Ethernet上的兩臺主機。 2)、用一個雙字類型變量Bus來模擬總線(將其初始化為” \0”,并且總線等于”\0”時 表示總線空閑)。 3)、兩個子線程向總線發送自己的數據。數據用該線程的線程號進行模擬,發送數據用線 程號和Bus的“或”操作進行模擬(即Bus=Bus|ID,ID為該線程的線程號)。 4)、每臺主機必須將總線上發送成功10次數據,如果其中某次數據發送失敗,則該線程結 束。 5)、發送流程必須遵循CSMA/CD。隨機延遲算法中的沖突窗口取0.005。在數據發送成功(

資源截圖

代碼片段和文件信息


#include?
#include?
#include?


HANDLE?hTread1?hTread2; //?線程句柄
DWORD?dwThreadId1?dwThreadId2;?//?線程ID號
DWORD?Bus?=?0; //?總線

DWORD?WINAPI?ThreadProcA?(?LPVOID?lpParam?)//線程a(主機a)
{
int?i?=?0;//發送成功次數
int?CollisionCounter?=?16;//沖突計數器初始值
double?collisionWindow?=?0.005;//沖突窗口取值
int?randNum?=?rand()%3;//隨機數

Loop:?if?(Bus==0)//總線空閑
{
Bus?=?Bus|dwThreadId1;//模擬發包
Sleep?(12);
if?(Bus?==?dwThreadId1) //?無沖突,數據發送成功
{
printf?(?“%d?Send?Success\n\n“?dwThreadId1?);
Bus?=?0;//內存清0
CollisionCounter?=?11;//恢復沖突計數器
Sleep?(rand()%10);//隨機延時
i++;
printf?(?“主機a發送成功次數=?%d\n\n“?i);
if?(i<10)//發送次數不足10次,開始下一次發送
goto?Loop;
}
else //?發生沖突,數據發送失敗
{
printf?(?“%d?Send?Collision\n\n“?dwThreadId1?);
Bus?=?0;
CollisionCounter--;//沖突計數器減1
if?(?CollisionCounter>0?)
{//隨機延遲重發,延遲算法用截止二進制指數后退算法
Sleep((unsigned?long)(randNum?*?(int)pow(2(CollisionCounter>10)?10:CollisionCounter)?*?collisionWindow));
goto?Loop;//下一次嘗試發送
}
else
{
printf?(?“%ld?Send?Failure\n\n“?dwThreadId1?);//重發次數超過16次,宣布發送失敗
}
}
}
else
goto?Loop;//總線忙,繼續載波偵聽
return?0;
}

DWORD?WINAPI?ThreadP

評論

共有 條評論