?? developer.htm
字號:
mso-bidi-font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";}
p.MsoToc9, li.MsoToc9, div.MsoToc9
{mso-style-next:Normal;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:80.0pt;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:9.0pt;
mso-bidi-font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";}
p.MsoFooter, li.MsoFooter, div.MsoFooter
{margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
tab-stops:center 3.0in right 6.0in;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";}
p.MsoTitle, li.MsoTitle, div.MsoTitle
{margin:0in;
margin-bottom:.0001pt;
text-align:center;
mso-pagination:widow-orphan;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:16.0pt;
mso-bidi-font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";}
p.MsoBodyText, li.MsoBodyText, div.MsoBodyText
{margin:0in;
margin-bottom:.0001pt;
text-align:justify;
mso-pagination:widow-orphan;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:11.0pt;
mso-bidi-font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";}
p.MsoBodyText2, li.MsoBodyText2, div.MsoBodyText2
{margin:0in;
margin-bottom:.0001pt;
text-align:justify;
mso-pagination:widow-orphan;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:11.0pt;
mso-bidi-font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
font-style:italic;
mso-bidi-font-style:normal;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 59.15pt 1.0in 78.0pt;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-title-page:yes;
mso-footer:url("./Developer_files/header.htm") f1;
mso-paper-source:0;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:-2;
mso-list-type:simple;
mso-list-template-ids:-1158129902;}
@list l0:level1
{mso-level-start-at:0;
mso-level-text:*;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0in;
text-indent:0in;}
@list l1
{mso-list-id:494076331;
mso-list-type:simple;
mso-list-template-ids:1233287526;}
@list l1:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:.25in;
mso-level-legacy-space:0in;
margin-left:.25in;
text-indent:-.25in;}
@list l2
{mso-list-id:1456293368;
mso-list-type:simple;
mso-list-template-ids:1233287526;}
@list l2:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:.25in;
mso-level-legacy-space:0in;
margin-left:53.45pt;
text-indent:-.25in;}
@list l0:level1 lfo4
{mso-level-number-format:bullet;
mso-level-numbering:continue;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:.25in;
mso-level-legacy-space:0in;
margin-left:32.2pt;
text-indent:-.25in;
font-family:Symbol;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
-->
</style>
</head>
<body lang=EN-US style='tab-interval:14.2pt'>
<blockquote>
<div class=Section1>
<p class=MsoTitle style='text-align:justify'><b style='mso-bidi-font-weight:
normal'><![if !supportEmptyParas]> <![endif]><o:p></o:p></b></p>
<p class=MsoTitle style='text-align:justify'><b style='mso-bidi-font-weight:
normal'><![if !supportEmptyParas]> <![if !supportEmptyParas]> <![if !supportEmptyParas]> <![endif]><o:p></o:p></b></p>
<p class=MsoTitle><b style='mso-bidi-font-weight:normal'>Worker Thread 1.2
Developer's Guidelines<o:p></o:p></b></p>
<p class=MsoNormal align=center style='text-align:center'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoNormal align=center style='text-align:center'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'>Dominik Filipp, 27. August
1999<o:p></o:p></span></p>
<span style='font-size:10.0pt;font-family:"Times New Roman";mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA'><br clear=all
style='mso-special-character:line-break;page-break-before:always'>
</span>
<p class=MsoNormal style='text-align:justify'><span style='font-size:11.0pt;
mso-bidi-font-size:10.0pt'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<h5>Contents</h5>
<p> </p>
<span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'>
<p><A HREF="#Preface">Preface</A></p>
</span><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal'><o:p></o:p></span>
<span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><LI><A HREF="#CThread_Class_Conception">CThread Class Conception</A></LI></span><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal'><o:p></o:p></span>
<p class=MsoToc2 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt;font-variant:normal;
text-transform:uppercase'><LI><A HREF="#Thread_Task_Paradigms">Thread Task Paradigms</A></LI><o:p></o:p></span>
<p class=MsoToc3 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><LI><A HREF="#Trivial_Threads">Trivial Threads</A></LI><o:p></o:p></span>
<p class=MsoToc3 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><LI><A HREF="#Notificable_Threads">Notificable Threads</A></LI><o:p></o:p></span>
<p class=MsoToc2 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt;font-variant:normal;
text-transform:uppercase'><LI><A HREF="#Thread_Synchronization">Thread Synchronization</A></LI><o:p></o:p></span>
<p class=MsoToc3 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><LI><A HREF="#Thread_Handler_Oriented_Synchronization">Thread-Handler-Oriented Synchronization</A></LI><o:p></o:p></span>
<p class=MsoToc3 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><LI><A HREF="#Single_Thread_Object_Synchronization">Single Thread Object
Synchronization</A></LI><o:p></o:p></span>
<p class=MsoToc3 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><LI><A HREF="#Process_Synchronization">Process Synchronization</A></LI><o:p></o:p></span>
<p class=MsoToc2 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt;font-variant:normal;
text-transform:uppercase'><LI><A HREF="#Thread_Notification">Thread Notification</A></LI></span>
<p class=MsoToc3 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><LI><A HREF="#Commands">Commands</A></LI><o:p></o:p></span>
<p class=MsoToc2 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt;font-variant:normal;
text-transform:uppercase'><LI><A HREF="#Racing_Conditions">Racing Conditions</A></LI><o:p></o:p></span>
<p class=MsoToc2 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt;font-variant:normal;
text-transform:uppercase'><LI><A HREF="#Synchronous_Versus_Asynchronous_Methods_Deadlocks">Synchronous Versus Asynchronous Methods;
Deadlocks</A></LI><o:p></o:p></span>
<p class=MsoToc2 style='margin-bottom:6.0pt;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt;font-variant:normal;
text-transform:uppercase'><LI><A HREF="#CThread_and_GUI">CThread and GUI</A></LI><o:p></o:p></span>
<p class=MsoToc1 style='margin-top:0in;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><LI><A HREF="#Generating_CThread_Derived_Class_Source_Code">Generating
CThread-Derived Class Source Code</A></LI></span><span style='font-size:11.0pt;
mso-bidi-font-size:10.0pt;font-weight:normal'><o:p></o:p></span>
<p class=MsoToc1 style='margin-top:0in;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><LI><A HREF="#Implementing_CThread_Task_Handler">Implementing CThread Task
Handler</A></LI></span><span style='font-size:11.0pt;mso-bidi-font-size:10.0pt;
font-weight:normal'><o:p></o:p></span>
<p class=MsoToc1 style='margin-top:0in;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><LI><A HREF="#Important_Notes">Important Notes</A></LI></span><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt;font-weight:normal'><o:p></o:p></span>
<p class=MsoToc1 style='margin-top:0in;text-align:justify;tab-stops:right dotted 474.35pt'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><LI><A HREF="#Additional_Documentation">Additional Documentation</A></LI><o:p></o:p></span>
<h1 style='margin-top:0in;margin-right:0in;margin-bottom:6.0pt;margin-left:
0in;text-align:justify'><!--[if supportFields]><span style='font-size:11.0pt;
mso-bidi-font-size:10.0pt'><span style='mso-element:field-end'></span></span><![endif]--></h1>
<p style='margin-top:0in;margin-right:0in;margin-bottom:6.0pt;margin-left:
0in;text-align:justify'> </p>
<p style='margin-top:0in;margin-right:0in;margin-bottom:6.0pt;margin-left:
0in;text-align:justify'><span
style='font-size:11.0pt;mso-bidi-font-size:10.0pt'><br clear=all
style='page-break-before:always'>
</span><b><a name="Preface"><span
style='mso-bookmark:Preface'><font size="4">Preface</font></span></a></b></p>
<p class=MsoNormal style='text-align:justify'> </p>
<p class=MsoNormal style='text-align:justify'><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;mso-bidi-font-size:
10.0pt'>CThread</span></b><span style='font-size:11.0pt;mso-bidi-font-size:
10.0pt'> class written in Microsoft Visual C++ is a wrapper class that
constitutes the base for the comfortable Windows worker thread handling in the
MFC environment. <b style='mso-bidi-font-weight:normal'>CThread</b> itself is
an abstract class from which user thread-specific classes have to be derived. <b
style='mso-bidi-font-weight:normal'>CThread</b> class offers the opportunities
how to define, implement and handle thread objects. Most functionality is done
in this base class, a developer is just responsible to implement a
thread-specific task and handle incoming notifications fired from the owner of
the thread. <b style='mso-bidi-font-weight:normal'>CThread</b> class is fully
compliant to the Object-Oriented Paradigm.<o:p></o:p></span></p>
<p class=MsoNormal style='text-align:justify'><span style='font-size:11.0pt;
mso-bidi-font-size:10.0pt'><![if !supportEmptyParas]></span></p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -