您的位置:首页 > 其它

线程同步互斥主要按钮设计思想

2017-02-22 13:15 253 查看

线程同步互斥主要按钮设计思想

1.“开始”按钮设计思想

开始按钮利用循环,创建相应数量的线程。下面以生产者线程的创建进行举例说明:

(1) 在参数设置界面获取到的生产者线程数量赋值给Produce_Num,从而进行循环个数的限定。

for (k = 0; k <= PAGE1.Produce_Num - 1; k++)

(2) 首先进行参数的赋值,并将其作为实参传递给该线程的函数入口。

{

pthread1.dlg = this; //可以写到for循环外面
pthread1.ptid = k;


(3) 调用创建线程的函数,线程的函数入口位PUTTER函数,参数位上述设置好的指针。第4个参数为零表示创建之后立即激活。

P_hThreads[k] = CreateThread(NULL, 0, PUTTER, (LPVOID)&pthread1, 0, NULL);

(4) 暂停,继续,结束,清空按钮与上述类似,在此不再赘述。

2.“保存”按钮设计思想

(1) 保存按钮主要保存历史记录界面的listbox中三个BUFFER各自的内容,首先进行保存路径的获取。

CString PATH;

CFileDialog dlg(TRUE);

if (dlg.DoModal() == IDOK)

PATH = dlg.GetPathName(); //获取文件路径

(2) 定义一个Cfile对象,并将其变为UNICODE编码,以进行换行操作和防止中文乱码。

int n, i,j,k;

n = h->PAGE3.Show1.GetCount();

CFile myFile;

CFile mFile(PATH, CFile::modeWrite | CFile::modeCreate);

wchar_t unicode = 0xFEFF;

mFile.Write(&unicode, sizeof(wchar_t));//将文件变为UNICODE编码

(3) 将BUFFER1内容写入。将写入操作设置为一个循环,从BUFFER1的n-1行开始一直到第0行结束进行保存,即按照BUFFER1历史记录中出现的先后顺序,将其保存至相应的文件。

b = “BUFFER1历史记录”;

mFile.Write(b, 22);

mFile.Write(_T(“\r\n”), 2 * sizeof(wchar_t));

for (i = n - 1; i >= 0; i–)

{

h->PAGE3.Show1.GetText(i, a);

mFile.Write(a, 8);

mFile.Write(_T(“\r\n”), 2 * sizeof(wchar_t));

mFile.Flush();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: