⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jinchen.mht

📁 谈到在Windows创建线程的例子
💻 MHT
📖 第 1 页 / 共 5 页
字号:
=A1=D4=DA=BA=AF=CA=FDthreadFunc=C4=DA=B2=BF=B5=C4=BD=D3=CA=D5=B5=E3=A3=AC=
=BF=C9=D2=D4=CA=B9=D3=C3=A1=B0=C7=BF=D0=D0=D7=AA=BB=BB=A1=B1=A3=AC=C8=E7:=
<BR><BR>
            <TABLE borderColor=3D#cccccc width=3D"90%" align=3Dcenter =
bgColor=3D#e3e3e3=20
            border=3D1>
              <TBODY>
              <TR>
                <TD>int =
intValue=3D((pMyType)lpvoid)-&gt;firstArgu;<BR>long=20
                  longValue=3D((pMyType)lpvoid)-&gt;secArgu;<BR>=A1=AD=20
            =A1=AD</TD></TR></TBODY></TABLE><BR>=A1=A1=A1=A12.2=20
            =
=CF=DF=B3=CC=CA=B5=D1=E91---=B4=B4=BD=A8N=B8=F6=CB=E6=BB=FA=CF=DF=B3=CC=A3=
=AC=CB=F9=D3=D0=CF=DF=B3=CC=B5=C4=D6=B4=D0=D0=CA=B1=BC=E4=BE=F9=CE=AAT=C3=
=EB=A3=AC=B9=DB=B2=EC=C3=BF=B8=F6=CF=DF=B3=CC=B5=C4=D4=CB=D0=D0=D7=B4=BF=F6=
:<BR><BR>=A1=A1=A1=A1=CE=AA=C1=CB=CA=B9=CF=DF=B3=CC=B5=C4=D4=CB=D0=D0=C7=F7=
=D3=DA=CB=E6=BB=FA=BB=AF=A3=AC=D3=A6=CF=C8=CA=B9=D3=C3:<BR><BR>
            <TABLE borderColor=3D#cccccc width=3D"90%" align=3Dcenter =
bgColor=3D#e3e3e3=20
            border=3D1>
              <TBODY>
              <TR>
                <TD>srand((unsigned int)time=20
            =
(NULL));</TD></TR></TBODY></TABLE><BR>=A1=A1=A1=A1=D4=DA=C3=BF=B8=F6=CF=DF=
=B3=CC=B5=C4=D4=CB=D0=D0=D6=D0=A3=AC=C3=BF=B8=F6=CF=DF=B3=CC=B5=C4=CB=AF=C3=
=DF=CA=B1=BC=E4=CE=AA:<BR><BR>
            <TABLE borderColor=3D#cccccc width=3D"90%" align=3Dcenter =
bgColor=3D#e3e3e3=20
            border=3D1>
              <TBODY>
              <TR>
                =
<TD>sleepTime=3D1000+30*(int)eRandom(50+tNo);<BR><BR>Sleep(sleepTime);</T=
D></TR></TBODY></TABLE><BR>=A1=A1=A1=A1=D5=E2=D1=F9=A3=AC=BF=C9=D2=D4=CA=B9=
=BD=F8=B3=CC=B5=C4=D4=CB=D0=D0=C7=F7=D3=DA=CB=E6=BB=FA=BB=AF.<BR><BR>/*=B2=
=E2=CA=D4=B3=CC=D0=F22=A3=BA<BR><BR>=A1=A1=A1=A1=B4=B4=BD=A8N=B8=F6=CB=E6=
=BB=FA=CF=DF=B3=CC=B5=C4=CB=E6=BB=FA=CA=B5=D1=E9.<BR><BR>=A1=A1=A1=A1=C3=FC=
=C1=EE=D0=D0=CA=E4=C8=EB=B2=CE=CA=FD:<BR><BR>
            <TABLE borderColor=3D#cccccc width=3D"90%" align=3Dcenter =
bgColor=3D#e3e3e3=20
            border=3D1>
              <TBODY>
              <TR>
                <TD>test threadNo runSecs <BR><BR>*/<BR><BR>#include=20
                  &lt;windows.h&gt;<BR>#include =
&lt;math.h&gt;<BR>#include=20
                  &lt;stdio.h&gt;<BR>#include =
&lt;stdlib.h&gt;<BR>#include=20
                  &lt;time.h&gt;<BR><BR>#define N 5<BR>#define Type=20
                  float<BR><BR>static int runFlag=3DTRUE;<BR><BR>DWORD =
WINAPI=20
                  threadWork(LPVOID threadNo);<BR>int =
parseArgToInt(char*=20
                  inNumChar);<BR>Type eRandom(int =
upLimit);<BR><BR>typedef=20
                  struct<BR>{<BR>=A1=A1int =
data;<BR>}INTEGER;<BR><BR>void main(int=20
                  argc=A3=ACchar* argv[])<BR>{<BR>=A1=A1unsigned int =
runTime;<BR>=A1=A1int=20
                  i;<BR>=A1=A1int threadNum;<BR>=A1=A1//int =
N;<BR><BR>=A1=A1SYSTEMTIME=20
                  now;<BR>=A1=A1WORD =
stopTimeMinute=A3=ACstopTimeSecond;<BR>=A1=A1DWORD=20
                  targetThreadID;<BR><BR>=A1=A1//Get command line=20
                  =
argument=A3=ACN<BR><BR>=A1=A1if(argc!=3D3)<BR>=A1=A1{<BR>=A1=A1=A1=A1prin=
tf("please=20
                  enter:NThread &lt;ThreadNum&gt;=20
                  =
&lt;runTime&gt;\n");<BR>=A1=A1=A1=A1return;<BR>=A1=A1}<BR><BR>=A1=A1threa=
dNum=3DparseArgToInt(argv[1]);<BR>=A1=A1runTime=3DparseArgToInt(argv[2]);=
<BR>=A1=A1//Get=20
                  the time the threads should =
run=A3=ACruntime<BR>=A1=A1//Calculate time=20
                  to halt<BR>=A1=A1// runTime=3D60;/*in=20
                  =
seconds.*/<BR><BR>=A1=A1GetSystemTime(&amp;now);<BR>=A1=A1printf("mthread=
:Suite=20
                  starting aty system=20
                  =
time%d=A3=AC%d=A3=AC%d\n"=A3=ACnow.wHour=A3=ACnow.wMinute=A3=ACnow.wSecon=
d);<BR>=A1=A1stopTimeSecond=3D(now.wSecond+(WORD)runTime)%60;<BR><BR>=A1=A1=
stopTimeMinute=3Dnow.wMinute+(now.wSecond+(WORD)runTime)/60;<BR><BR>=A1=A1=
//FOR=20
                  1 TO N<BR><BR>=A1=A1INTEGER*=20
                  =
tmpInt;<BR><BR>=A1=A1for(i=3D0;i&lt;threadNum;i++)<BR>=A1=A1{<BR>=A1=A1=A1=
=A1//CREATE=20
                  A NEW THREAD TO EXECUTE SIMULATED=20
                  =
WORK;<BR>=A1=A1=A1=A1//threadWork(i);<BR><BR>=A1=A1=A1=A1tmpInt=3D(INTEGE=
R*)malloc(sizeof(INTEGER));<BR>=A1=A1=A1=A1tmpInt-&gt;data=3Di;<BR>=A1=A1=
=A1=A1CreateThread(NULL=A3=AC0=A3=ACthreadWork=A3=ACtmpInt=A3=AC0=A3=AC&a=
mp;targetThreadID);<BR>=A1=A1=A1=A1Sleep(100);//Let=20
                  newly created thread =
run<BR>=A1=A1}<BR><BR>=A1=A1//Cycle while children=20
                  =
work...<BR><BR>=A1=A1while(runFlag)<BR>=A1=A1{<BR>=A1=A1=A1=A1GetSystemTi=
me(&amp;now);<BR>=A1=A1=A1=A1if((now.wMinute&gt;=3DstopTimeMinute)&amp;&a=
mp;(now.wSecond&gt;=3DstopTimeSecond))<BR>=A1=A1=A1=A1=A1=A1runFlag=3DFAL=
SE;<BR>=A1=A1=A1=A1Sleep(1000);<BR>=A1=A1}<BR>=A1=A1Sleep(5000);<BR>=A1=A1=
printf("Program=20
                  ends successfully\n");<BR>}<BR><BR>DWORD WINAPI=20
                  threadWork(LPVOID threadNo)<BR>{<BR>=A1=A1//local=20
                  variables<BR>=A1=A1double y;<BR>=A1=A1const double =
x=3D3.14159;<BR>=A1=A1const=20
                  double e=3D2.7183;<BR>=A1=A1int i;<BR>=A1=A1const int =
napTime=3D1000;//in=20
                  milliseconds<BR>=A1=A1const int =
busyTime=3D400;<BR>=A1=A1int=20
                  tNo=3D((INTEGER*)threadNo)-&gt;data;<BR>=A1=A1int=20
                  sleepTime;<BR>=A1=A1DWORD =
result=3D0;<BR><BR>=A1=A1/*randomasize the=20
                  random num seeds.*/<BR><BR>=A1=A1srand((unsigned =
int)time=20
                  =
(NULL));<BR><BR>=A1=A1while(runFlag)<BR>=A1=A1{<BR>=A1=A1=A1=A1//Paramete=
rized=20
                  processor burst=20
                  =
phase<BR>=A1=A1=A1=A1for(i=3D0;i&lt;busyTime;i++)<BR>=A1=A1=A1=A1y=3Dpow(=
x=A3=ACe);<BR><BR>=A1=A1=A1=A1//Parameterized=20
                  sleep=20
                  =
phase<BR><BR>=A1=A1=A1=A1sleepTime=3D1000+30*(int)eRandom(50+tNo);<BR>=A1=
=A1=A1=A1Sleep(sleepTime);<BR>=A1=A1=A1=A1printf("I=20
                  am thread No.%d=A3=ACsleep=20
                  =
sec:%ds\n"=A3=ACtNo=A3=ACsleepTime);<BR>=A1=A1}<BR><BR>=A1=A1//Terminate<=
BR>=A1=A1return=20
                  result;<BR>}<BR><BR>int parseArgToInt(char*=20
                  inNumChar)<BR>{<BR>=A1=A1int=20
                  =
equipData=3D0=A3=ACi=3D0;<BR>=A1=A1while(inNumChar[i]&gt;=3D'0'&amp;&amp;=
inNumChar[i]&lt;=3D'9')<BR>=A1=A1{<BR>=A1=A1=A1=A1equipData=3D10*equipDat=
a+(inNumChar[i]-48);<BR>=A1=A1=A1=A1i++;<BR>=A1=A1}<BR>=A1=A1return=20
                  equipData;<BR>}<BR><BR>Type eRandom(int =
upLimit)<BR>{<BR>=A1=A1Type=20
                  =
tmpData;<BR>=A1=A1do<BR>=A1=A1{<BR>=A1=A1=A1=A1tmpData=3D((Type)rand()/(T=
ype)32767)*(Type)100.0*(Type)upLimit;<BR>=A1=A1}<BR>=A1=A1while(tmpData&g=
t;upLimit);<BR>=A1=A1return=20
                  =
tmpData;<BR>}<BR></TD></TR></TBODY></TABLE><BR>=A1=A1=A1=A12.3=20
            =
=CF=DF=B3=CC=CA=B5=D1=E92---Windows=CF=C2=BF=C9=B4=B4=BD=A8=B5=C4=CF=DF=B3=
=CC=B5=C4=CA=FD=C4=BF=B5=C4=B2=E2=CA=D4:<BR><BR>=A1=A1=A1=A1=D5=E2=C0=EF=CA=
=B9=D3=C3=B5=C4=CA=C7=C8=C3=B2=E2=CA=D4=CF=DF=B3=CC=CB=AF=C3=DF100=C3=EB=A3=
=AC=C8=E7=B9=FB=D3=C3=B5=C4=CA=C7=C8=C3=B2=E2=CA=D4=BD=F8=B3=CC=BD=F8=C8=EB=
=CB=C0=D1=AD=BB=B7=B5=C4=B7=BD=B7=A8=A3=AC=D4=F2=BB=E1=BA=DC=BF=EC=C8=C3=CF=
=B5=CD=B3=BD=A9=B5=F4=A1=A3<BR><BR>
            <TABLE borderColor=3D#cccccc width=3D"90%" align=3Dcenter =
bgColor=3D#e3e3e3=20
            border=3D1>
              <TBODY>
              <TR>
                =
<TD>/*=B2=E2=CA=D4=B3=CC=D0=F23:<BR><BR>=B2=E2=CA=D4=D4=DAWindows=CF=C2=D7=
=EE=B6=E0=BF=C9=B4=B4=BD=A8=CF=DF=B3=CC=B5=C4=CA=FD=C4=BF.<BR><BR>*/<BR><=
BR>DWORD=20
                  WINAPI threadWork(LPVOID threadNo)<BR>{<BR>=A1=A1DWORD =

                  =
result=3D0;<BR>=A1=A1while(runFlag)<BR>=A1=A1{<BR>=A1=A1=A1=A1Sleep(10000=
0);<BR>=A1=A1}<BR>=A1=A1//Terminate<BR>=A1=A1return=20
                  result;<BR>}<BR><BR>void main(int argc=A3=ACchar*=20
                  argv[])<BR>{<BR>=A1=A1int count=3D0;<BR>=A1=A1DWORD =
targetThreadID;<BR>=A1=A1=20
                  =
<BR>=A1=A1while(runFlag)<BR>=A1=A1{<BR>=A1=A1=A1=A1if(CreateThread(NULL=A3=
=AC0=A3=ACthreadWork=A3=ACNULL=A3=AC0=A3=AC&amp;targetThreadID)=3D=3DNULL=
)<BR>=A1=A1=A1=A1{<BR>=A1=A1=A1=A1=A1=A1runFlag=3Dfalse;<BR>=A1=A1=A1=A1=A1=
=A1break;<BR>=A1=A1=A1=A1}<BR>=A1=A1=A1=A1else<BR>=A1=A1=A1=A1=A1=A1count=
++;<BR>=A1=A1=A1=A1printf("%d=20
                  =
"=A3=ACcount);<BR>=A1=A1}<BR>=A1=A1Sleep(5000);<BR>=A1=A1printf("max =
threads=20
                  num:%d\n"=A3=ACcount);<BR>=A1=A1printf("Program ends=20
                  =
successfully\n");<BR>}</TD></TR></TBODY></TABLE><BR>=A1=A1=A1=A1=D4=DAWin=
dows=20
            =
XP=CF=C2(=C8=FC=D1=EF800MHZ=A3=AC256M=C4=DA=B4=E6)=A3=AC=D4=DA=C9=CF=CA=F6=
=B7=BD=CA=BD=CF=C2=A3=AC=B2=E2=B5=C3=BF=C9=B4=B4=BD=A8=B5=C4=D7=EE=B6=E0=B5=
=C4=CF=DF=B3=CC=CA=FD=C4=BF=CE=AA2030=B8=F6. <BR>=A1=A1=A1=A12.4=20
            =
=CF=DF=B3=CC=CA=B5=D1=E93---=D7=EE=BC=F2=B5=A5=B5=C4=D2=BB=B8=F6=C1=D9=BD=
=E7=D7=CA=D4=B4=B5=C4=B6=C1=D5=DF=A3=AC=D0=B4=D5=DF=B3=CC=D0=F2.<BR><BR>=A1=
=A1=A1=A1=D5=E2=B8=F6=B3=CC=D0=F2=D2=AA=CA=B5=CF=D6=B5=C4=CA=C7=D7=EE=BC=F2=
=B5=A5=B5=C4=B6=C1=D5=DF=A3=AC=D0=B4=D5=DF=B3=CC=D0=F2=A3=AC=B6=C1=D5=DF=BD=
=AB1~10=CA=AE=B8=F6=CA=FD=D7=D6=D2=C0=B4=CE=CC=EE=C8=EB=C1=D9=BD=E7=D7=CA=
=D4=B4=C7=F8gData=A3=AC=B5=B1=C7=D2=BD=F6=B5=B1gData=B1=BB=B6=C1=D5=DF=CF=
=FB=B7=D1=BA=F3=A3=AC=D0=B4=D5=DF=B2=C5=BF=C9=D2=D4=D0=B4=C8=EB=CF=C2=D2=BB=
=B8=F6=CA=FD.<BR><BR>
            <TABLE borderColor=3D#cccccc width=3D"90%" align=3Dcenter =
bgColor=3D#e3e3e3=20
            border=3D1>
              <TBODY>
              <TR>
                =
<TD>/*=B2=E2=CA=D4=B3=CC=D0=F24:<BR><BR>=D7=EE=BC=F2=B5=A5=B5=C4=D2=BB=B8=
=F6=C1=D9=BD=E7=D7=CA=D4=B4=B5=C4=B6=C1=D5=DF=A3=AC=D0=B4=D5=DF=B3=CC=D0=F2=
.<BR><BR>*/<BR><BR>DWORD=20
                  WINAPI threadReader(LPVOID lpvoid)<BR>{<BR>=A1=A1int=20
                  reader_Data;<BR>=A1=A1int =
busyTime=3D10000;<BR>=A1=A1float tmp;<BR>=A1=A1int=20
                  =
i;<BR><BR>=A1=A1while(gRunFlag)<BR>=A1=A1{<BR>=A1=A1=A1=A1while(stateFlag=
=3D=3DWRITER_FLAG)<BR>=A1=A1=A1=A1=A1=A1for(i=3D0;i&lt;busyTime;i++)<BR>=A1=
=A1=A1=A1=A1=A1=A1=A1tmp=3Dpow(2=A3=AC10);<BR>=A1=A1=A1=A1=A1=A1=A1=A1rea=
der_Data=3DgData;<BR>=A1=A1=A1=A1=A1=A1=A1=A1printf("reader=20
                  gets=20
                  =
data:%d\n"=A3=ACgData);<BR>=A1=A1=A1=A1=A1=A1=A1=A1stateFlag=3DWRITER_FLA=
G;<BR>=A1=A1}<BR>=A1=A1printf("reader=20
                  ends\n");<BR>=A1=A1return NULL;<BR>}<BR><BR>DWORD =
WINAPI=20
                  threadWriter(LPVOID lpvoid)<BR>{<BR>=A1=A1int=20
                  upTime=3D((INTEGER*)lpvoid)-&gt;mInt;<BR>=A1=A1int=20
                  busyTime=3D10000;<BR>=A1=A1float tmp;<BR>=A1=A1int=20
                  =
i;<BR><BR>=A1=A1while(gRunFlag)<BR>=A1=A1{<BR>=A1=A1=A1=A1while(stateFlag=
=3D=3DREADER_FLAG)<BR>=A1=A1=A1=A1for(i=3D0;i&lt;busyTime;i++)<BR>=A1=A1=A1=
=A1=A1=A1tmp=3Dpow(2=A3=AC10);<BR>=A1=A1=A1=A1gData++;<BR>=A1=A1=A1=A1pri=
ntf("writer=20
                  gets=20
                  =
data:%d\n"=A3=ACgData);<BR><BR>=A1=A1=A1=A1if(gData=3D=3DupTime)<BR>=A1=A1=
=A1=A1=A1=A1gRunFlag=3Dfalse;<BR>=A1=A1=A1=A1stateFlag=3DREADER_FLAG;<BR>=
=A1=A1}<BR>=A1=A1printf("writer=20
                  ends\n");<BR>=A1=A1return NULL;<BR>}<BR><BR>/*Main=20
                  =
=D6=D0=B5=C4=B5=F7=D3=C3*/<BR><BR>=A1=AD=A1=AD<BR>CreateThread(NULL=A3=AC=
0=A3=ACthreadReader=A3=ACtmpInt=A3=AC0=A3=AC&amp;targetThreadID);<BR>Crea=
teThread(NULL=A3=AC0=A3=ACthreadWriter=A3=ACtmpInt=A3=AC0=A3=AC&amp;targe=
tThreadID);=20
                  =
<BR>=A1=AD=A1=AD</TD></TR></TBODY></TABLE><BR>=A1=A1=A1=A1=B2=E2=CA=D4=BD=
=E1=B9=FB: (=C8=E7=CD=BC2)<BR><BR>
            <P align=3Dcenter><IMG =
alt=3D=C0=FB=D3=C3API=D4=DAWindows=CF=C2=B4=B4=BD=A8=BD=F8=B3=CC=BA=CD=CF=
=DF=B3=CC=A3=A8=CD=BC=B6=FE=A3=A9=20
            =
src=3D"http://www.dvbbs.net/ShowImg.asp?p=3D/2006-4-21/7223924pq89_2.jpg"=
=20
            border=3D0><BR>=CD=BC2</P><BR><BR>=A1=A1=A1=A12.5 =
=BC=B8=B5=E3=CB=B5=C3=F7:<BR><BR>=A1=A1=A1=A12.5.1=20
            =
=D6=F7=B5=F7=D3=C3=B3=CC=D0=F2=D4=DA=BD=E1=CA=F8=CA=B1=CA=B9=D3=C3Sleep(5=
000)=B5=C4=D2=E2=CD=BC=D4=DA=D3=DA:=CA=B9=B5=C3=D3=C9=CB=FC=CB=F9=B2=FA=C9=
=FA=B5=C4=D7=D3=CF=DF=B3=CC=BF=C9=D2=D4=D4=DA=D6=F7=BD=F8=B3=CC=BD=E1=CA=F8=
=D6=AE=C7=B0=A3=AC=CD=EA=B3=C9=C8=E7=D7=CA=D4=B4=CA=CD=B7=C5=D2=BB=C0=E0=B5=
=C4=B9=A4=D7=F7=A1=A3<BR><BR>=A1=A1=A1=A12.5.2=20
            =
=D4=DA=CB=E6=BB=FA=CF=DF=B3=CC=B2=FA=C9=FA=B2=E2=CA=D4=B3=CC=D0=F2=D6=D0:=
<BR><BR>=A1=A1=A1=A1=D6=AE=CB=F9=D2=D4=B2=C9=D3=C3=D4=DA=C3=BF=B8=F6=CF=DF=
=B3=CC=C4=DA=B2=BF=D3=C3<BR><BR>srand((unsigned int)time=20
            =
(NULL));<BR><BR>=A1=A1=A1=A1=C8=A5=B3=F5=CA=BC=BB=AF=C3=BF=B8=F6=CF=DF=B3=
=CC=A3=AC=CA=C7=CE=AA=C1=CB=CA=B9=B5=C3=CB=F9=D3=D0=B5=C4=CF=DF=B3=CC=D3=B5=
=D3=D0=D7=D4=BC=BA=B5=C4=CB=E6=BB=FA=CA=FD=D6=D6=D7=D3=A3=AC=B7=F1=D4=F2=A3=
=AC=C8=E7=B9=FB=CA=C7=D4=DA=D6=F7=B5=F7=D3=C3=B3=CC=D0=F2=D6=D0=C8=A5=B3=F5=
=CA=BC=BB=AF=CB=E6=BB=FA=CA=FD=D6=D6=D7=D3=CA=FD=A3=AC=D4=F2=CB=F9=D3=D0=B5=
=C4=CF=DF=B3=CC=B5=C3=B5=BD=B5=C4=CB=E6=BB=FA=CA=FD=D0=F2=C1=D0=B6=BC=CA=C7=
=D2=BB=D1=F9=B5=C4=A3=AC=BD=AB=CE=DE=B7=A8=B2=FA=C9=FA=CB=E6=BB=FA=D0=A7=B9=
=FB=A1=A3<BR><BR>=A1=A1=A1=A13=A1=A2=D3=A6=D3=C3=BC=B0=CD=C6=B9=E3:<BR><B=
R>=A1=A1=A1=A1=B2=C9=D3=C3=D5=E2=D6=D6=D4=DAWindows=CF=C2=C0=FB=D3=C3=BF=D8=
=D6=C6=CC=A8=B5=F7=D3=C3Windows=20
            =
API=BD=F8=D0=D0=B2=D9=D7=F7=CF=B5=CD=B3=CA=B5=D1=E9=B5=C4=B7=BD=B7=A8=A3=AC=
=BE=DF=D3=D0=B4=FA=C2=EB=BC=F2=BD=E0=A3=AC=B9=DB=B2=EC=D0=A7=B9=FB=BA=C3=D3=
=EB=CA=B5=CF=D6=C4=BF=B1=EA=BD=D3=BD=FC=B5=C8=D3=C5=B5=E3=A1=A3 =
=A1=A1=A1=A1 </DIV></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=3D1 width=3D"100

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -