[問題] 無法利用全域變數來控制server丟資料

作者: airawesu   2016-12-07 22:36:34
開發平台(Platform): (Ex: Win10, Linux, ...)
win7
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
visual studio2015
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
server利用while(1)無限循環client丟回來的值來判斷要丟什麼東西回去
此外我也叫了另一個thread來寫入全域變數a
在while(1)裡面加入if a>1的判斷來控制要不要丟a的值給client
但是發現那個if判斷似乎完全沒有執行
因為我有用cout來做是否有做到該程序的判斷
不過連cout都沒有做
餵入的資料(Input):
thread thread1(keyin);
void keyin()
{
while (1)
{
cout << "please key in value of a:";
cin >> a;
cout << "value of a is " << a << "\n";
Sleep(5000);
}
}
if (*ptr >= 1)
{
strcpy(sendData, "a的值是 ");
char buffer[1];
sprintf(buffer, "%d", a);
strcat_s(sendData, buffer);
strcat_s(sendData, " 的唷\n");
send(current_client, sendData, sizeof(sendData), 0);
cout << sendData << "\n";
printf("\n我做完了發送a的值的流程\n");
cleanBuf();
cleanSendData();
}
預期的正確結果(Expected Output):
將if (*ptr >= 1)該做的程序完全做完
錯誤結果(Wrong Output):
沒執行
程式碼(Code):(請善用置底文網頁, 記得排版)
http://ideone.com/ytAAcP
補充說明(Supplement):
大學學完C++後完全徹底的荒廢兩年 才重新自學
請鞭小力
作者: stupid0319 (徵女友)   2016-12-07 22:40:00
跟上一個貼文是同一個作業嗎?
作者: airawesu   2016-12-07 22:41:00
從上一個程式碼後已經是大改造了..指標 class之類的都有
作者: fatrabitree (胖兔子)   2016-12-07 22:41:00
先猜volatile
作者: o07608 (無良記者)   2016-12-07 22:42:00
不同
作者: firejox (Tangent)   2016-12-07 23:04:00
volatile 有可能

Links booklink

Contact Us: admin [ a t ] ucptt.com