用C++编写一个程序,在名为text.txt的英文文本文件上使用线程执行三个功能。
步骤:
编写代码用时间来证明使用线程不会使你受阻。也就是说,一旦所有线程开始,主线程就得到自由。
a. 程序将在没有线程的情况下运行这三个函数,然后再使用线程。(这一步骤麻烦讲一下,我没有理解原理)
要实现的函数
a. word_count() → 将计算文本文件中的单词数量
b. sentence_count() → 将计算文本文件中的句子数量
c. find_frequent_word() → 找到最常出现的单词和它在文本中出现的次数。和它在文本中出现的次数
输出:
计算字数:
计算句子数量:
出现频率最高的单词是 :
最高频率词的数量:
在没有线程的情况下所用时间:
启动线程1
计算单词。
启动线程2
计算句子。
启动线程3
在有线程的情况下所用时间:
主线程退出
出现频率最高的单词是 :
最高频率词的数量:
退出线程3
句子数量:
退出线程2
字数:
退出线程1
怎么个输出法呀,兄弟
你是指三个进程依次打印吗?
void alternateExe3()
{
const int num = 3;
HANDLE handle[num];
g_hThreadEvent1 = CreateEvent(NULL,false,false,NULL);
event0 = CreateEvent(NULL,false,false,NULL);
event1 = CreateEvent(NULL,false,false,NULL);
event2 = CreateEvent(NULL,false,false,NULL);
InitializeCriticalSection(&g_csThreadCode1);
int i=0;
for (i=1; i<3; i++)
{
handle[i]=(HANDLE)_beginthreadex(NULL,0,Fun3,&i,0,NULL);
WaitForSingleObject(g_hThreadEvent1,INFINITE);
}
WaitForMultipleObjects(num,handle,TRUE,INFINITE);
CloseHandle(g_hThreadEvent1);
CloseHandle(event0);
CloseHandle(event1);
CloseHandle(event2);
DeleteCriticalSection(&g_csThreadCode1);