02等待单个线程返回WaitForSingleObject
windows 多线程之等待线程返回
多线程编程中,有时我们需要等待某一线程完成了特定的操作之后再继续做其他事情,要实现这个目的,可以使用 Windows API 函数 WaitForSingleObject,或者 WaitForMultipleObject。这两个函数都会等待 Object 被标记为有信号(signaled)时才返回。只要是 Windows 创建的 Object 都会被赋予一个状态量。如果 Object 被激活了,或者正在使用,那么该 Object 就是无信号,也就是不可用;另一方面,如果 Object 可用了,那么它就恢复有信号了。
一. WaitForSingleObject 等待单个线程返回
1. 函数原型
DWORD WINAPI WaitForSingleObject(
_In_ HANDLE hHandle,
_In_ DWORD dwMilliseconds
);
2. 参数说明
第一个参数 hHandle 是对象的句柄,可以是一下几种:
Change notification
Console input
Event
Memory resource notification
Mutex
Process
Semaphore
Thread
Waitable timer
第二个参数 dwMilliseconds 为等待时间,以毫秒为单位。参数 dwMilliseconds 有两个具有特殊意义的值:0 和 INFINITE。若为 0,则该函数立即返回;若为 INFINITE,则线程一直被挂起,直到 hHandle 所指向的对象变为有信号状态为止。
3. 返回值
- WAIT_ABANDONED 0x00000080 当 hHandle 为 Mutex 时,如果拥有 Mutex 的线程在结束时没有释放核心对象会引发此返回值。
- WAIT_OBJECT_0 0x00000000 等待的对象处于有信号状态。
- WAIT_TIMEOUT 0x00000102 等待超时。
- WAIT_FAILED 0xFFFFFFFF 出现错误,可以通过 GetLastError 得到错误代码。
4. 示例
(1)参数 dwMilliseconds 为 0,则该函数立刻返回(不阻塞)。
#include <Windows.h>
#include <stdio.h>
DWORD WINAPI ThreadFunc(LPVOID P)
{
Sleep(5000);
printf("I am child thread,Pid = %d\n", GetCurrentThreadId());
return 0;
}
int main()
{
HANDLE hThread;
hThread = CreateThread(NULL, 0, ThreadFunc, 0, 0, NULL);
printf("I am main thread, Pid = %d\n", GetCurrentThreadId());
//不等待,直接返回
WaitForSingleObject(hThread, 0);
return 0;
}
输出结果为:
aaarticlea/jpeg;base64,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" alt="image">
(2)参数 dwMilliseconds 为 5000,等待 5 秒后返回。
#include <Windows.h>
#include <stdio.h>
DWORD WINAPI ThreadFunc(LPVOID P)
{
printf("I am child thread,Pid = %d\n", GetCurrentThreadId());
Sleep(10000);
printf("The child thread quit, pid = %d \n", GetCurrentThreadId());
return 0;
}
int main()
{
HANDLE hThread;
hThread = CreateThread(NULL, 0, ThreadFunc, 0, 0, NULL);
printf("I am main thread, Pid = %d\n", GetCurrentThreadId());
//等待 5s 后返回
WaitForSingleObject(hThread, 5000);
return 0;
}
输出结果为:
aaarticlea/jpeg;base64,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" alt="image">
(3)参数 dwMilliseconds 为 INFINITE,则线程一直被挂起,直到 hHandle 所指向的对象变为有信号状态时为止。
#include <Windows.h>
#include <stdio.h>
DWORD WINAPI ThreadFunc(LPVOID P)
{
printf("I am child thread,Pid = %d\n", GetCurrentThreadId());
Sleep(10000);
printf("The child thread quit, pid = %d \n", GetCurrentThreadId());
return 0;
}
int main()
{
HANDLE hThread;
hThread = CreateThread(NULL, 0, ThreadFunc, 0, 0, NULL);
printf("I am main thread, Pid = %d\n", GetCurrentThreadId());
//线程一直被挂起,直到 hThread 有信号,即子线程返回
WaitForSingleObject(hThread, INFINITE);
return 0;
}
输出结果为:
aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCABuATgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD7v+EHwh8B6x8I/BF5feCPDd3d3Oh2M080+lQSvI7W6FmZihLEkk5PJzXWj4HfDgKVHw/8LBT1X+xbbB/8cqf4OKq/CLwOqRiFRodiBGBgKPs6cfhXwT8bP20vGnw5+JXxI0uw+H+reJNL8NandRtqK+NpbB7lVQXEq21pjdMLaGVGlEAfyY9skmxGBronOXPL3upzU4QcIu3RH3jH8Efh1GoCeAfC6Adl0a2H/slPb4L/AA+bGfAnhk46Z0e3/wDiK/K7x1/wUq8ZeCZ7BNf+G/inw5NqNtLNBaS+OJllURXN1Zyl43t2eN1uIJlKSAENbr8u0nf+qnhrxAdN+E+j61fvNdvFo0FzMzNuklbyVYkk9WJ7nuazdSSV+Z/iaqnGWnKRL8Ffh5HJvXwH4ZV/7w0e3B/9AqZ/hD4EkGH8FeHXHX5tKgP/ALJVmHUtZ0mzm1TX59Nh06OFppobaGXfaqBu+/ubzcDg4RM9R6VXuvFGoLo3iN7eKGXUtNDTQR+W22aErvjON2cldy5z95Tx2pOcur2GqcXay3FHwk8DDp4L8PDt/wAgqD/4ik/4VH4FLAnwX4eJHQ/2VB/8RTF8dmXxfZ2EccbaRPZCU3fJYTMpkVOOMeWrN+Iqha+PNUfTZbiWC1V/7Dk1aNRG453N5anLdNu3PfOelJ1JR3b/AKv/AJMahF7L+nb/ADNIfCHwIoIHgrw6Aev/ABKoOf8Axyj/AIVD4E27P+EK8O7f7v8AZUGP/QKoWfxAu5NIgE8MEOtR3tpbXcG1thjmkULKnOdrKSRycEEHODTh4n8QLZ6xq4OnT6bpt1cRvYiB453iiYgkTeYV3YGcFMHGMjORXPNN67f8D/NE8kZdP61/yLn/AAp/wH/0JPh3/wAFNv8A/EVI3wn8EOuG8G+H2HodLg/+Ipseuav4kvr1NDmsbKzs2WJri+tnnaaRkV8KqyJsUB15JOSTwMZNfS/Hk9xqFml9bw2VtJFdxz8lvKubdwHAfIyhXcw+XOBn2o9pNbth7OHSKJv+FQ+BBJvHgrw6Hxjd/ZUGfz2USfCHwJNt8zwT4dk28jdpUBx/45VDQvHmp6tpOlGSzht9VutRNtNblWISIIZs9eG8rbyTjcfwpdK8Wa3qnh271m3l0u7WONnawgik8+1dSGaBzv8Amk2bh91MNg7SDij2k1vJ/eL2VN6KK+4tS/Bj4fTsGk8C+GpG/vNpFuT/AOgU0fBP4dqMDwF4YA/7A9v/APEVt33i3TLCKyd5Zp/tkfmwJaWstw7pgHftjViF+ZeSMcj1qT/hKNM2uftBGy6FkymNwwmOPlxjPQg56Y5zjmn7SotOZi9lTavyr7jAX4K/DyOExL4D8MrE3VBo9uFP4bKP+FJ/DzaV/wCEC8MbfT+x7fH/AKBUurfEvTbHQ5dTtYL69hWSKNWWxuESQO2AyP5eGXGTlcg/KM/MM6U3jXSILqOCSaZHby9zG0m2RF8bVlfZtiY5HyuVPzDjkUe0qfzMPY0usV9xjL8EPhyowPAHhcD20a2/+Ipv/CjPhvu3f8K+8K7vX+xbbP8A6BWnJ8RvD8d1Jbm9kMqSyW+FtZmDTISGiUhMNJxwgyxGCAQRUGveLwdBh1HStT02zjlZ0STVIpMySrkCFYtyNvLBh1yNuNpzwvbTtfmY/Y0725V9xF/wpn4f7Sv/AAgvhraeo/si3x/6BTV+Cvw9jYMvgPwyrDuNHtwf/QK6nS7qW+020uJ7drSeaJJJLdzkxsQCVPuDx+FWqbqVE7cz+8lUqTV+Vfcci3wh8CNjPgrw6frpUH/xFJ/wp7wFuLf8IR4c3Hq39k2+f/QK6+ij2tT+Z/eP2NL+VfcchH8HvAULMyeCPDiM33iuk24J+vyVL/wqnwT0/wCEO0DH/YLg/wDiKuXPj7wxZ3EtvceI9JgnicxyRSX0SsjA4KkFsgg9q0dJ1rTtet2uNMv7XUYFfy2ltJllUMADtJUkZwRx7il7Sf8AMw9jSW0V9xgt8J/BDLtPg3w+R6HS4P8A4ioP+FL/AA+37/8AhBPDO7+9/Y9vn/0Cuyoo9pP+Zh7Gk94r7jkf+FP+A+f+KJ8O8nJ/4lMH/wARTG+DPw/Zst4G8NsfU6Rb/wDxFdjWD42vLqz0JWs7p7KeW9s7bz41RmRZLmKNiA6sudrt1Bo9pP8AmYvYUv5F9yM1vg54BZdreB/DZHodIt//AIim/wDCl/h9/wBCJ4a/8E9v/wDEVD4s0zWNB8K6zqdv4t1Z57OymuY1khsipZI2YA4twcZHrXcU/a1P5mH1ej/IvuRxzfBn4fsoVvAvhogdAdIt/wD4io/+FJ/DsHI8BeGM+v8AY1t/8RXa0UvaT/mYewpfyL7kcevwc8AxtlfA/htT6jSbcf8AslOk+D/gOT7/AIJ8Ov8A72k25/8AZK66sfxC+p2iQ32nETrb7jPYNtH2hDjO1z911xlcnackHGQyntJ/zMPq9H+RfcjK/wCFQ+BNu3/hCvDu3pt/sqDH/oFM/wCFN+AD18D+G/8AwUW//wARU3hvxJL43nh1TS5vK8Ox7gjsg8y8fBU8EZRFP0ZmHZR8/VUe0n/MxfV6P8i+5HHf8Kb8Af8AQjeG/wDwUW//AMRRXY0U/a1P5n94fV6P8i+5HKfCZmb4V+DSyhWOi2RKjsfITivzq/aT/Yi+PHxO+JfxFudE8O+DNU8M6xq91qGi3WvXO670xrm3gtrqWFAfLLTRW0K5mSQxeWjw+TLl6+yvhl+0l8I/D/w38J6XqfxT8F6dqNlpNpbXNneeIrSOeCVIUV45EaTcrqwIIbkEEHmul/4ao+Cv/RX/AAF/4U1l/wDHaVT436l0tacfRH5m6h/wT2/aZ8ReDbXwz4i8O+A/EOm2E2r3Wlpc6pPbLpU2oG3aV7WK2eKKJY3tt8cITyQ08xaNtyhf1d8N+GyfhvpOg6rCUcaVDZ3UQYEqwiVWAYZGQc8j0rlP+GqPgr/0V/wF/wCFNZf/AB2j/hqj4K/9Ff8AAX/hTWX/AMdrPyNdtTrYdE8RpZy27+I4TthaO3uE04CUMRhXkJcq5HXCqgJHpxU1zpdzD4k0+/hTz45YGs745C5UAvHJjvhty4HP730FcZ/w1R8Ff+iv+Av/AAprL/47R/w1R8Ff+iv+Av8AwprL/wCO0eoeRq/8KtC+FZ9JTU2W4acSR3phyY0VBEqbd3OIgVzkcknHatjU/BiX0120VwLaKbSm0tYxHkRgk4bqM4z09utcl/w1R8Ff+iv+Av8AwprL/wCO0f8ADVHwV/6K/wCAv/Cmsv8A47Rurf1tb8h36/1vf8zo9c+HsOsXGg3SXbWt3pbw75ETIuIkZW8thnpuUEHnHPqaYvgjUGXUbGTWIho19cy3E0ENmUuCsjFmj80yEbTnBIQHGcEHmuf/AOGqPgr/ANFf8Bf+FNZf/HaP+GqPgr/0V/wF/wCFNZf/AB2nfW/9a2/yF/X3f8OdZN4Y1Cx1K7utD1OCwW8KtPb3dobiPeqhQ6BZEKkqoBySDgcDnNXU/h3FfeHLbS47+aOWOd55LyVd7ymQOJtwBH31kcccDIwOMVzv/DVHwV/6K/4C/wDCmsv/AI7R/wANUfBX/or/AIC/8Kay/wDjtIDr4/B0cPi9tbW42xm38tbUR/clIVTIGz/cRVxjt15qLS/CV1D4kXWdQvra6uY7drZXtbP7O8qkqf3zb28wjbxgKAS2Bzgcr/w1R8Ff+iv+Av8AwprL/wCO0f8ADVHwV/6K/wCAv/Cmsv8A47QHkaU3gK+vtMGnLNb2AsJpYrG8eEyzJA+GUwyJIjxMoPl9SCE5BBqxY6Cbzx/PeILpbGzhXc1xEUE15tMfmrkDfiLgsMqdwx0OMX/hqj4K/wDRX/AX/hTWX/x2j/hqj4K/9Ff8Bf8AhTWX/wAdo/r+v63A1ofhrPHp+pWo1OC3juBF5FvZ2bRW0LRyb9/k+aRuYgbtmwH0zzTn+GMM3iCTU5xpN01xJHPcm40lZZvMVVB8qRnPlqdo+UhyMnB54x/+GqPgr/0V/wABf+FNZf8Ax2j/AIao+Cv/AEV/wF/4U1l/8do2dwOpt/BPk/Yv9N3fZtWn1T/Vfe8zzf3f3uMeb177enPDf+ET1Kz0+5tdP1a3iW5uLqaVbuw8+MrNIXxtEinK5IySQcnK+nMf8NUfBX/or/gL/wAKay/+O0f8NUfBX/or/gL/AMKay/8AjtK2lv6/rQd9b/11/wA2dba+GNQ0uzt7LT9be3sreC2ghjktkkYCNvnJY9S6YX/ZxkVsaZbXdrbyJeXn26VpZHWTyhHtQsSqYHXaMDPfGa86/wCGqPgr/wBFf8Bf+FNZf/HaP+GqPgr/ANFf8Bf+FNZf/Haq4j1GivLv+GqPgr/0V/wF/wCFNZf/AB2j/hqj4K/9Ff8AAX/hTWX/AMdpAeo0V5d/w1R8Ff8Aor/gL/wprL/47R/w1R8Ff+iv+Av/AAprL/47QB6jRXl3/DVHwV/6K/4C/wDCmsv/AI7R/wANUfBX/or/AIC/8Kay/wDjtAHqNZPifRpte0n7Lb3KWk63FvcxzSRGVQ0UySgFQykglMdR1rhP+GqPgr/0V/wF/wCFNZf/AB2j/hqj4K/9Ff8AAX/hTWX/AMdoA6LWvDfifXtGv9MuNd0lILy3ktpGj0iUMFdSpIzdEZwfSuvry7/hqj4K/wDRX/AX/hTWX/x2j/hqj4K/9Ff8Bf8AhTWX/wAdoA9Rory7/hqj4K/9Ff8AAX/hTWX/AMdo/wCGqPgr/wBFf8Bf+FNZf/HaAPUayde0H/hIPs9vcXBXTAS1zaKv/Hz02qzZ+513Lj5uATjIbhP+GqPgr/0V/wABf+FNZf8Ax2j/AIao+Cv/AEV/wF/4U1l/8doA7lPDy2muDUbGb7Isw23lsqZjuMLhGxkbXGANw6qMEHCldivONK/aU+EWu6pZ6bpvxT8FajqN5MlvbWdr4hs5Zp5XYKkaIshLMzEAKBkkgCvQvtUP/PaP/voUAS0VF9qh/wCe0f8A30KKAP57PEtxoLeC/iRqN54M0i81+x8Tx6ZHq89zfCfF0NSkaVlS5WIyIbaIJ+724B3K5Oa8Pr2jxRq3guw8NfEHw5e6pr0PiK+8Rf2iIbfR4ZLSOS1N/FHF5zXauVk+1KS/l5TaRtfrXi9aVPjfqZUf4cfRHUWPwz8Ral4ZbXoLOFrHypLhImvIEu54YywkmitWcTSxJsk3SIjIvlS5I8t9vQaf+z34z1TQ7bWIU0FNOuLFdTSa48T6ZARatKIRK6vchkXzT5R3AYk+Q4biuo+FHxb8H+D/AAu2mX8esaXLeaZqWk6k2jWFrM90bmCeNLqSeR0lkRBJCn2EMkW6BJ/M3goa8nxG8Fj4dw6Gl3rzXx8FSaBKzaXAI1vBrCamhU/actESZIS5AZQquEbcUXM1PH9Q0+70jULmxvraayvrWVoJ7a4jMckUikqyOpGVYEEEHkEV6Bp/7PfjPVNDttYhTQU064sV1NJrjxPpkBFq0ohErq9yGRfNPlHcBiT5DhuKx/jF4l0rxp8VfFviLRGvG0zWNTuNRhGoQJDMnnOZGRlSR1+VmKghvmCg4XO0dxJ8RvBY+HcOhpd6818fBUmgSs2lwCNbwawmpoVP2nLREmSEuQGUKrhG3FFAOHb4R+LIdJvL+fSfsn2XzjJY3dzDDflYWZZ5Es3cTukZjlDukZVPJl3EeW+3Qm8Oww/AuLVj4Zs5Lt9dRT4mh16OSaKF4ZQllLp6uWi3NBLKsrqpITAyCCfYLr9oD4dSeLPF1/ZjxJpth4k/tqO8NrpFmLmc38dyRPNKZzJIkRniiFkJEiY20dzvWTMVeT6Hrfgu3+Det6Bearr0XiHUb611NYoNHgktEktor2OOIzG7VysgulJfy8ptICv1oArwfAfxrdaTpWpRadZtaatardaY39rWe/UQWZTFbJ5u6edWXa0EYaVWZFZAXUHz+vaPD3xG8F6N4r+CWqvd69JD4NijOqoulwbmkjv5r5Vg/wBJ+dWecxFn2EBA+GLeWvj+oJax6hcpYzTXNisrCCa4hEMkkeTtZ0DOEYjBKhmAPGT1oA7jR/g3qOsfCrVfG8ep6PFb2N1DCLKbV7JJnR0umdijTiRHBtgEiKb5Q5ZAQhzsar8D73VvCvgnXPCthMYda0czyQ6lqlssl1fR3dzbyQ2SN5T3DEQRMIIllkUzxqSxdC3P+CfFGgWvhDXfDniOPUhY3l9ZaqkmlrG0kslrHdRi2JcgRLILtv3+JDGYx+6k3cdh4e+I3gvRvFfwS1V7vXpIfBsUZ1VF0uDc0kd/NfKsH+k/OrPOYiz7CAgfDFvLUA5/Qf2efHPifT9GvtMsNNu7HWJRbWdyuu2CxvcERstqzGcBLkiVCLd8SkbsIdjYx9A+EvibxNpMGoWFrZlLrd9jtbjU7W3vL7DFP9GtpJFmuMurRr5SNudWRcspUdB4s1jwBJ8KtN8O6JrniS91PTdTvNRhOoaDb2sM/wBpSzjZGZL2Rk2LaFgQrbi4GFxurqPAfx50vw74V8IxTTzadq3haJ47ZLfwrpWoyXTC7mu0dL+6zLaNun2DbFKIynmAMWKAA8vsfhn4i1Lwy2vQWcLWPlSXCRNeQJdzwxlhJNFas4mliTZJukRGRfKlyR5b7ew+B/wRn+IXi/womtpDa+G9Yvo7Qk69Y6beyxvJ5XnW0VwS8yrJkfJGwdonjUhwdux8KPi34P8AB/hdtMv49Y0uW80zUtJ1JtGsLWZ7o3ME8aXUk8jpLIiCSFPsIZIt0CT+ZvBQ1/h18TfBekar8Mdb8Rrr327wPLFGmnaXbQNHexrqE14JjcPKDGym4YeV5TBxCB5sfm7owDxeiuw8XaP4V0/wn4fudFvby51e5ur8XSXUsR3WiSItpMYYwfszv+/VoWlkYeUrghJELcfQB9MeFPhrp/iLw/8AC+f/AIVRC/hnXLFR4i8aQf2oV00LqFzaz3Rm+0G2haOCFJj5iGNSSxXZhR5PN4dhh+BcWrHwzZyXb66inxNDr0ck0ULwyhLKXT1ctFuaCWVZXVSQmBkEE1/iB4i0DW/Cvw/stIudSmvtF0eTT79b6yjgjEjXc91mJlmcuubp0+ZUOIlbHzlU0ND1vwXb/BvW9AvNV16LxDqN9a6msUGjwSWiSW0V7HHEZjdq5WQXSkv5eU2kBX60AaHwP+CM/wAQvF/hRNbSG18N6xfR2hJ16x029ljeTyvOtorgl5lWTI+SNg7RPGpDg7fJ69o+HXxN8F6Rqvwx1vxGuvfbvA8sUaadpdtA0d7GuoTXgmNw8oMbKbhh5XlMHEIHmx+buj8f1BLWPULlLGaa5sVlYQTXEIhkkjydrOgZwjEYJUMwB4yetAHUaB4H0XWNJgvLv4h+G9DuJN27T9Qt9TaaLDEDcYbOSPkAMNrngjODkDj67DQPjJ4/8K6TBpWieOPEmj6Zb7vJstP1e4ghj3MWbaiOFGWYk4HJJPeuPoA9A8D6P4b1j4c/EOW80u8m8R6VpkV/Z3/24LbRKdQsYCvkCMMz7Z5fnMhXDY8vcAw7DwN8O9I8SzfDHwfF4c/tDU/HVq1xLrkT3D3umt9vurbfFGjiFoIktVlkWSMsVMw82PKNHy/wx1vwXpHhXxhZeI9V16yvtdsV0xF0vR4LuOKNbu0uhKWe7iJYm2ZNm3ADBtx+7Vj4WfFr/hXekxsuseJEuNP1OLV7bQLe6/4k+o3EbRPC1zHvUp5ckKOxCyGVQqAwFRKQDoPh34V8M6l4c8OTXPhqz1fQJt3/AAl/iie4ukuPDubiRTsEcyRL/owhkh82KXzpneNPNZTCtiDwrZaN8KfB2t2Xw98K+KZrzR7nUdQl1LWrldRZo7+8jZks4b+J2iSGBGLpCQAkjM2FYrj+B/iV4V0ey8F3eoy6xbXfhXzt2hWNjFLY655kzyTfaJmnQxefC6Wkv7mbMUKZ3jEa4/gnxd4R8IN4a8Tw22pQ+MfDsq3EVjHCsllqV1HcNNBcTTtMHiVQ0aNDHEd62/EiNKXjANj4Z2fgrWtS8EeF5dCs9XfWufEOtXU15Fc6KpuZllkhKSpAEhtI47kvLHKqlpC5KqUXx+vWPB+t/Da38GadpWrar4q0ma7l3+I00fR7ad7+NZy0cEVzJdp5cQRY22GIjzvnfzRHCsfk9ABRRRQAUUUUAFFFFAHqP7K//Jz3wg/7HHR//S2Gv3r+IXxC0T4Y+F7rXteufs9nD8qRoAZZ5CDtijXI3OcHjoACSQASPwU/ZX/5Oe+EH/Y46P8A+lsNfvX4g+HuieKfFHh/XtUtftl5oPnNYxyYMSSSGP8AelccuvljaTwCScZClQDS8N+JNM8XaHZ6zo15HqGmXkfmQXER4YdCMHkEEEFTgggggEEUVm+CPh7onw7g1W30G1+w2eo3z6g9qmPKikZERhGMfKn7sHb0BJAwMAFAH4a+Kbvw9L4O+JWpTeDNJvNas/FCabBq9xc34uNl3/aUhlZFuREZENtEE+TbgHcrk5rw2vbvGuueDINH+JOg32p67B4i1HxM2piC30iCWzjktmv444fON2rFX+1qS/l5TaQFfg14jVz+JmVL+HH0R1Fj8M/EWpeGW16Czhax8qS4SJryBLueGMsJJorVnE0sSbJN0iIyL5UuSPLfb0Gn/s9+M9U0O21iFNBTTrixXU0muPE+mQEWrSiESur3IZF80+UdwGJPkOG4rqPhR8W/B/g/wu2mX8esaXLeaZqWk6k2jWFrM90bmCeNLqSeR0lkRBJCn2EMkW6BJ/M3goa8nxG8Fj4dw6Gl3rzXx8FSaBKzaXAI1vBrCamhU/actESZIS5AZQquEbcUWDU8f1DT7vSNQubG+tprK+tZWgntriMxyRSKSrI6kZVgQQQeQRXQeF/hn4i8ZafJeaVZwywiU28Kz3kFvJeTAAmG1jkdXuZQGj/dwh3zLGMZkTNj4xeJdK8afFXxb4i0RrxtM1jU7jUYRqECQzJ5zmRkZUkdflZioIb5goOFztGhZ+JfCviTw5oVn4rbWLW48OWslnZx6NBFImoW7XE1z5UkkkgNs4knlXzgkwKun7oGI+aAbGq/A+91bwr4J1zwrYTGHWtHM8kOpapbLJdX0d3c28kNkjeU9wxEETCCJZZFM8aksXQtjzeHYYfgXFqx8M2cl2+uop8TQ69HJNFC8MoSyl09XLRbmgllWV1UkJgZBBPUeHviN4L0bxX8EtVe716SHwbFGdVRdLg3NJHfzXyrB/pPzqzzmIs+wgIHwxby1x7XWPAFn8KvEvh1dc8SSanf6nb6jbE6DbrD/oqXscKO320svmrdIzEK3llWAEvDEAz4NH8N3nwL1TV4NLvIvE+n67p1nPqE18JIZIZ4dQcrFCI18v8A494txdpCSuVKAlTsfA/4Iz/ELxf4UTW0htfDesX0doSdesdNvZY3k8rzraK4JeZVkyPkjYO0TxqQ4O3P0PW/Bdv8G9b0C81XXovEOo31rqaxQaPBJaJJbRXsccRmN2rlZBdKS/l5TaQFfrXQfDr4m+C9I1X4Y634jXXvt3geWKNNO0u2gaO9jXUJrwTG4eUGNlNww8rymDiEDzY/N3RgHi9egaP8G9R1j4Var43j1PR4rexuoYRZTavZJM6Ol0zsUacSI4NsAkRTfKHLICEOeH1BLWPULlLGaa5sVlYQTXEIhkkjydrOgZwjEYJUMwB4yetdh4J8UaBa+ENd8OeI49SFjeX1lqqSaWsbSSyWsd1GLYlyBEsgu2/f4kMZjH7qTdwAdBqvwPvdW8K+Cdc8K2Exh1rRzPJDqWqWyyXV9Hd3NvJDZI3lPcMRBEwgiWWRTPGpLF0LZ+g/s8+OfE+n6NfaZYabd2OsSi2s7lddsFje4IjZbVmM4CXJEqEW74lI3YQ7Gx0Hh74jeC9G8V/BLVXu9ekh8GxRnVUXS4NzSR3818qwf6T86s85iLPsICB8MW8tcfxZrHgCT4Vab4d0TXPEl7qem6neajCdQ0G3tYZ/tKWcbIzJeyMmxbQsCFbcXAwuN1AHP6B8JfE3ibSYNQsLWzKXW77Ha3Gp2tveX2GKf6NbSSLNcZdWjXykbc6si5ZSor2Pwz8Ral4ZbXoLOFrHypLhImvIEu54YywkmitWcTSxJsk3SIjIvlS5I8t9vqHgP486X4d8K+EYpp5tO1bwtE8dslv4V0rUZLphdzXaOl/dZltG3T7BtilEZTzAGLFBX+FHxb8H+D/C7aZfx6xpct5pmpaTqTaNYWsz3RuYJ40upJ5HSWREEkKfYQyRboEn8zeChAMf4H/BGf4heL/Cia2kNr4b1i+jtCTr1jpt7LG8nledbRXBLzKsmR8kbB2ieNSHB2+T17R8Ovib4L0jVfhjrfiNde+3eB5Yo007S7aBo72NdQmvBMbh5QY2U3DDyvKYOIQPNj83dHx+oXXgiH4Y3NjZWk114s/4SJpLXV5TJFI2lrARsmg3NDGzSFGXY8jZEoYqqoZQDh6+mPCnw10/xF4f+F8//CqIX8M65YqPEXjSD+1CumhdQubWe6M32g20LRwQpMfMQxqSWK7MKPmeu4+IHiLQNb8K/D+y0i51Ka+0XR5NPv1vrKOCMSNdz3WYmWZy65unT5lQ4iVsfOVQAsTeHYYfgXFqx8M2cl2+uop8TQ69HJNFC8MoSyl09XLRbmgllWV1UkJgZBBOx8D/AIIz/ELxf4UTW0htfDesX0doSdesdNvZY3k8rzraK4JeZVkyPkjYO0TxqQ4O3P0PW/Bdv8G9b0C81XXovEOo31rqaxQaPBJaJJbRXsccRmN2rlZBdKS/l5TaQFfrXQfDr4m+C9I1X4Y634jXXvt3geWKNNO0u2gaO9jXUJrwTG4eUGNlNww8rymDiEDzY/N3RgHi9dhoHgfRdY0mC8u/iH4b0O4k3btP1C31NposMQNxhs5I+QAw2ueCM4OQOX1BLWPULlLGaa5sVlYQTXEIhkkjydrOgZwjEYJUMwB4yetdRoHxk8f+FdJg0rRPHHiTR9Mt93k2Wn6vcQQx7mLNtRHCjLMScDkknvQBx9egeB9H8N6x8OfiHLeaXeTeI9K0yK/s7/7cFtolOoWMBXyBGGZ9s8vzmQrhseXuAYef16R8Mdb8F6R4V8YWXiPVdesr7XbFdMRdL0eC7jijW7tLoSlnu4iWJtmTZtwAwbcfu0AbHwq1Twhe2QTV/h1o+o6f4f0yfUdc1a8v9QFzdYmKwpGsNzGkXmPNaWoIjk2FzKwZQwB8KtU8IXtkE1f4daPqOn+H9Mn1HXNWvL/UBc3WJisKRrDcxpF5jzWlqCI5NhcysGUMBw+n+KLW0+GOv+HHjmN9qGsabqEUiqPLEdvBfRuGOc7ibqPGARgNkjAyaf4otbT4Y6/4ceOY32oaxpuoRSKo8sR28F9G4Y5zuJuo8YBGA2SMDIB6R8O/CvhnUvDnhya58NWer6BNu/4S/wAUT3F0lx4dzcSKdgjmSJf9GEMkPmxS+dM7xp5rKYVz/BfgHQb2b4deG76x+16h8Qdm3WTNIkmkb7+ayh8mNWCSYeAySeYG3o4jTyGUyseB/iV4V0ey8F3eoy6xbXfhXzt2hWNjFLY655kzyTfaJmnQxefC6Wkv7mbMUKZ3jEa5/hL4oaVo8fg/V763vD4j8D4/sSC3RDZ3uLuW7i+0sWDx+XPNIzbA3nJtjHkMpmYA8vooooAKKKKACiiigD1H9lf/AJOe+EH/AGOOj/8ApbDX7Y1+J37K/wDyc98IP+xx0f8A9LYa/bGgC5o//IXsf+u6f+hCijR/+QvY/wDXdP8A0IUUAfkJ4m8SeAGXxp4hufhXpGprpPijT9MmM+raks98k0d891KzpcKiSSPaBk2x7YxIQVfANcJqvwPvdW8K+Cdc8K2Exh1rRzPJDqWqWyyXV9Hd3NvJDZI3lPcMRBEwgiWWRTPGpLF0LT+OvEnh+HR/iloU91qI8Qah4vj1G2jhso2szHbtdxkPMZgylheOeI2A8pRk7yU0dH8beFfDPiT4D63eN4kS08MWqXF5v0eJPtPlalc3YNqTc4lQzSSwF22bfJLYJJjW5/EzOn8EfQ8/0D4S+JvE2kwahYWtmUut32O1uNTtbe8vsMU/0a2kkWa4y6tGvlI251ZFyylRx9fRHhH4y6X4d8K6DPaSalDD4Nlazs7xfBelXkl0zXd1eW7NfXDSPYSuGdQirOIzC0i+YSyj5/utPu7KG0muLaaCG8iM9tJLGVWaMO0ZdCR8y743XI4yjDqDUGh0Hhf4Z+IvGWnyXmlWcMsIlNvCs95BbyXkwAJhtY5HV7mUBo/3cId8yxjGZEz2Gq/A+91bwr4J1zwrYTGHWtHM8kOpapbLJdX0d3c28kNkjeU9wxEETCCJZZFM8aksXQtn6TqmgeMPCumw+I4NeRvCFi8SDQbSOaO6s3u3lCzyu4+yN5920fn7JlImiHlbk/fdR4b8beFdL1z4MeIy3iSfTPA32eLWpo9Hi2C4F7c6hFFC32na3mM8sYLmM7YTIFblFAOPm8Oww/AuLVj4Zs5Lt9dRT4mh16OSaKF4ZQllLp6uWi3NBLKsrqpITAyCCSDR/Dd58C9U1eDS7yLxPp+u6dZz6hNfCSGSGeHUHKxQiNfL/wCPeLcXaQkrlSgJU6FrrHgCz+FXiXw6uueJJNTv9Tt9RtidBt1h/wBFS9jhR2+2ll81bpGYhW8sqwAl4YlrdeFdA+FXiXwlrd54k03xfPqdveTWJ0OLyba4s0vYVt3d7pZBuN0NzGIGMow2P1oAsfA/4Iz/ABC8X+FE1tIbXw3rF9HaEnXrHTb2WN5PK862iuCXmVZMj5I2DtE8akODt8nr3D4e+PPCuhzfCvxV4mtPEif8IddLaW9vptlE1tqHk373zOLqSQbHj+2ruhEbbgifvI/O3R+P32l/8hC805Ly70S3uhbrqE9t5X395hEgVnWN3WN22b2+4+CwUmgDsNH+Deo6x8KtV8bx6no8VvY3UMIsptXskmdHS6Z2KNOJEcG2ASIpvlDlkBCHOxqvwPvdW8K+Cdc8K2Exh1rRzPJDqWqWyyXV9Hd3NvJDZI3lPcMRBEwgiWWRTPGpLF0LY/gfWNKh8A+I9K8QWWsNok2p6dfte6TEjZuIYr1Y7N3chYfOWeYiXEhTyCRDKM7ew0Hxt4V0HXPgZ4jmbxIdM8J4i1Cb+x4gk1xBevqBitmNztk+a8SNixQquyTad4QAHL6D+zz458T6fo19plhpt3Y6xKLazuV12wWN7giNltWYzgJckSoRbviUjdhDsbGPoHwl8TeJtJg1CwtbMpdbvsdrcana295fYYp/o1tJIs1xl1aNfKRtzqyLllKjqPFE/gu4+Ddnpmg6l4q1CbRtYubsXV94dgtrR5LyK2RYZJUvZfLYJYSuvysXwRhQpauo8D/Gi18MeBfBd1creaXceHPOtbGaDwjpeofbpo7p7wmPUboGS1dTdxrtSOURfJLtYybKAPJ7H4Z+ItS8Mtr0FnC1j5UlwkTXkCXc8MZYSTRWrOJpYk2SbpERkXypckeW+3sPgf8ABGf4heL/AAomtpDa+G9Yvo7Qk69Y6beyxvJ5XnW0VwS8yrJkfJGwdonjUhwdux8KPi34P8H+F20y/j1jS5bzTNS0nUm0awtZnujcwTxpdSTyOksiIJIU+whki3QJP5m8FDX+HXxN8F6Rqvwx1vxGuvfbvA8sUaadpdtA0d7GuoTXgmNw8oMbKbhh5XlMHEIHmx+bujAPF67DwN8I/FnxI8keHNJ/tB57oWdvEbmGKS5m+UssKSOrS+Wro8hQERIweQop3Vy+oJax6hcpYzTXNisrCCa4hEMkkeTtZ0DOEYjBKhmAPGT1r3D4A+K/DWtfEL4Vp4muJtLuvCd9DHaTC5t7WymtReyXhe5nnceS0TyzP8ofz12RKInHmOAeb2Pwl8Tal4g8LaLbWtnJqHii1S70hf7TtRHco7yIo8wybEcvFJH5bsr712bdxAOhN4dhh+BcWrHwzZyXb66inxNDr0ck0ULwyhLKXT1ctFuaCWVZXVSQmBkEE9h4L8f+D/CviT4dX/ik6w+p/D+6S1+waGtrc218sepTXfnLeedtGGuGGxI3WQQriVPN3R8/a6x4As/hV4l8OrrniSTU7/U7fUbYnQbdYf8ARUvY4UdvtpZfNW6RmIVvLKsAJeGIBn6P8G9R1j4Var43j1PR4rexuoYRZTavZJM6Ol0zsUacSI4NsAkRTfKHLICEOfP67jwT4o0C18Ia74c8Rx6kLG8vrLVUk0tY2klktY7qMWxLkCJZBdt+/wASGMxj91Ju4z9d0vQLTwH4WvLOeb/hJLuW8Oo2zXcc8YgVo1tpVVEBhZj9oUxuzNiJZMKkqZAOXruLr4K+MbTwzaeIH0yF9JvLE6laTQ39tK1zApbzWiRZC8jQhGMyKC0AG6UIMGuHr6Autc8PeAfDHwa8TyXX2/xX4f0w3NnY6dqFnd2z3C6ndXUMd4I5PNtfLE8MjKVYzBzEPIeN3AB5/N4dhh+BcWrHwzZyXb66inxNDr0ck0ULwyhLKXT1ctFuaCWVZXVSQmBkEE7HwP8AgjP8QvF/hRNbSG18N6xfR2hJ16x029ljeTyvOtorgl5lWTI+SNg7RPGpDg7c/Q9b8F2/wb1vQLzVdei8Q6jfWuprFBo8ElokltFexxxGY3auVkF0pL+XlNpAV+tdB8Ovib4L0jVfhjrfiNde+3eB5Yo007S7aBo72NdQmvBMbh5QY2U3DDyvKYOIQPNj83dGAeL12GgeB9F1jSYLy7+IfhvQ7iTdu0/ULfU2miwxA3GGzkj5ADDa54Izg5A5fUEtY9QuUsZprmxWVhBNcQiGSSPJ2s6BnCMRglQzAHjJ611GgfGTx/4V0mDStE8ceJNH0y33eTZafq9xBDHuYs21EcKMsxJwOSSe9AHH16B4H0fw3rHw5+Ict5pd5N4j0rTIr+zv/twW2iU6hYwFfIEYZn2zy/OZCuGx5e4Bh5/XpHwx1vwXpHhXxhZeI9V16yvtdsV0xF0vR4LuOKNbu0uhKWe7iJYm2ZNm3ADBtx+7QBsfCrVPCF7ZBNX+HWj6jp/h/TJ9R1zVry/1AXN1iYrCkaw3MaReY81pagiOTYXMrBlDAHwq1Twhe2QTV/h1o+o6f4f0yfUdc1a8v9QFzdYmKwpGsNzGkXmPNaWoIjk2FzKwZQwHD6f4otbT4Y6/4ceOY32oaxpuoRSKo8sR28F9G4Y5zuJuo8YBGA2SMDJp/ii1tPhjr/hx45jfahrGm6hFIqjyxHbwX0bhjnO4m6jxgEYDZIwMgHpHw78K+GdS8OeHJrnw1Z6voE27/hL/ABRPcXSXHh3NxIp2COZIl/0YQyQ+bFL50zvGnmsphXP8F+AdBvZvh14bvrH7XqHxB2bdZM0iSaRvv5rKHyY1YJJh4DJJ5gbejiNPIZTKx4H+JXhXR7LwXd6jLrFtd+FfO3aFY2MUtjrnmTPJN9omadDF58LpaS/uZsxQpneMRrn+EvihpWjx+D9Xvre8PiPwPj+xILdENne4u5buL7SxYPH5c80jNsDecm2MeQymZgDy+iiigD1H9lf/AJOe+EH/AGOOj/8ApbDX9Af9j2H/AD423/flf8K/n8/ZX/5Oe+EH/Y46P/6Ww1/QfQBUTSrKN1dLO3VlOQyxKCD69KKt0UAfhp4h025b4geEpl1rw3rmj3firWbazkbTrm8uIWZoJJdOljmsZ1bm4BiEUE6LNcyuM5zXrfxq8O20nwvto30+z8LpY6YbCfVtb8ITJa2nmXkzEK48Mxsu5ZwFaJ7fbI+QpYF5fLPD/i7whpvxC8K2mqahNb6xpPxVu9Q2sVhtLW1kudNzczzMMFQLWZQi46l2dAgSWlrHxe8JeJPgz47htNJs/D+oX9rBYQ2+zS1uXcX1pOBttNLtXKMkM53eayKYMOqtJAWufxMzp/BH0D4YaT4P1H4F6re3fhbWP7Pi8TaEl3LqHiG1gs9SukhvQ0MbvFB5aN5wWQLK7wpcLMSVhZZOw/4Qv7PpPh7S9X+H3w3vdAsLWbxDqWm2Xi7yZrB7lo4kHmyazjZcRxacROQyILlSqOwKyeL/ANtXXiD4NrpGoeKodX1bU9Y0m20yzvtRO6wt7SLUImhkaYhLeJDd27KSwixMdrZjmEex4x8UWGsaT4g061vtHtfGVxplvb6zdWrsLDUILdlla0tZHlaJHQwWzfulSGT7OIbUIqIL2DQ0Ph78N9R0n4Ka7rWn3+j2Xi2+1PS4ZdN1+5sraJNJdZbuJpDeSCF/tE9pBIImXeY7dXwYZ/m6D4saX8RvEXgLwJpA8T+G7DSLjQnN/o+n+LdH03TJ5l1W9ZZFtoriOB+Fiy6KRvQgnerY8n8ErpmqfCfxLot94g03QJrvxFpE6TaiZWURx2mqb32QxySsoZ4kJVGAMqZwDmtj4gaL4W1Lwf4RhsfiV4bvLvw7oU1nNbR2mqq9zMb68ulWEvZBeVuI1BcoN2ckAbiAesfsq3lxqHhDxFB4VHjawtbaKC11S2sPE955ct1cxuVuYLew0meWFla0Dby3AVI3aRHZG6D48TX2g/COzHiyT4hap4bjvksZ7W78WahBJezzeZOkkv8AaGiRCZUFqqhUJWMojBA8ju/j/wAL9WsdB8My2PhXUtB1fXJJdL1DU9H8Yx6eukXhQ3xlCPfIm1okmtITskSQtLdFC8YWRdjxxDBeW17ZeIvE3hvR/At14mt4rSz8PxaC9/8AZ2jvViv7oaWGZ/sqsheLGJPPZUZCQwAOo8MfCu9j+Bvw+tTPNo2m6hrH9oXusa94QtptNs2kawkNy19fNH5Vt5AgRUVMXM0NxGHljePHqGnaLoEPwb+JV9rXw4m0fSVvtQe60O1sY7prWeOLVUZIbuLRdgWGY7UmE0qwDbmWMAwz/M/wx8feDfDfw30oa1fXkusaVqesXB0S2hKpf2l5a2FtLA020hPOjjuIsqVaNWeUPviihuOwm+LX9seH9chn+Inw3ubvWdTt9VN5q/gnZc/IlyGFzBHpMsTzsbkEuJZNhWQI7iRmIAfB6HwrpkfwVisr3WI9TvvGGm3b2V5aRWovrj7XGj3KuksjTWtusb28QkSMmW5uXSQ4mhQ8a/D/AMOaf8AdM8QR3ujvokmp61Lpaqusiya7mtdPTZDI9irPta1uvKSV1UMEDzTiGcNn+CvjpYaDN8LLTVfiL4w13TNPutKlutPlZrPTdFhtr9ZXilgUytf4VS0bDyyirCBux5UVfWNa0/VPA9pprfGPwq2rSX2pvqBfTdU+yS2dxb6fFDAsX9nbFWM2WUQIqxeXAY9pRdgBn28fw80f4N+Gxqd9ryreSzzz6a+lRRvqF1JE9v8AbY5EvAXtrEg+SsqL5sxuUDKsk4t/SLzUND8SfDfTtHv9a/sXRWupLibxFN8OfD0NqIb61yhiEV3uR1XTbvc9vmYyJ5JHmxRpXn9j8ZPL8J+FvDn/AAnHjDxf9o0xNO/sCfV/7B0jT8ySL9ku23v9rgbdgv5lvtg2L5i/dg6C7+LXhDxDq0nhDWvB/g+fU9eureXVdeS/1BdMi1ONTFbPLIL3dMiLNcC4ulkAd7hpQJ/JDXIB8v0V0Gtf8Ir/AMIn4c/sn+2P+En/ANJ/tv7b5X2L/WD7P9m2/P8Aczv3/wAWNvFc/QAUV0Gtf8Ir/wAIn4c/sn+2P+En/wBJ/tv7b5X2L/WD7P8AZtvz/czv3/xY28Vz9ABRXQa1/wAIr/wifhz+yf7Y/wCEn/0n+2/tvlfYv9YPs/2bb8/3M79/8WNvFc/QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHqP7K/wDyc98IP+xx0f8A9LYa/oPr+fD9lf8A5Oe+EH/Y46P/AOlsNf0H0AFFFFAH843xSO74neLyP+gxedP+uz1zFdP8UuPid4vGc/8AE4vOf+2z1zFVL4mRT+BBRRRUlhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB6j+yv/wAnPfCD/scdH/8AS2Gv6D6/nw/ZX/5Oe+EH/Y46P/6Ww1+3fx70TW7XR7bxz4a1f+zda8JwXN39nnBa1vrUqrzwSqOTkQqV56r2O10APVKK4n4S+BdT8DeG7lNd1qTX/EOqXbajqd63CGdkRNkQwMRqsaKowOnAUYVSgD//2Q==" alt="image">
02等待单个线程返回WaitForSingleObject的更多相关文章
- windows多线程(二) 等待线程返回
多线程编程中,有时我们需要等待某一线程完成了特定的操作后再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleO ...
- 03等待多个线程返回WaitForMultipleObject
二. WaitForMultipleObject 等待单个线程返回 1. 函数原型 DWORD WINAPI WaitForMultipleObjects( _In_ DWORD nCount, _I ...
- 获取Java线程返回值的几种方式
在实际开发过程中,我们有时候会遇到主线程调用子线程,要等待子线程返回的结果来进行下一步动作的业务. 那么怎么获取子线程返回的值呢,我这里总结了三种方式: 主线程等待. Join方法等待. 实现Call ...
- windows主线程等待子线程退出卡死问题
在windows下调用_beginthread创建子线程并获得子线程id(函数返回值),如果子线程很快退出,在主线程中调用WaitForSingleObject等待该线程id退出,会导致主线程卡死.需 ...
- Python建立多线程任务并获取每个线程返回值
1.进程和线程 (1)进程是一个执行中的程序.每个进程都拥有自己的地址空间.内存.数据栈以及其他用于跟踪执行的辅助数据.进程也可以派生新的进程来执行其他任务,不过每个新进程都拥有自己的内存和数据栈,所 ...
- Java如何等待子线程执行结束
工作中往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了. 一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线 ...
- Java主线程等待子线程、线程池
public class TestThread extends Thread { public void run() { System.out.println(this.getName() + &qu ...
- JAVA进阶----主线程等待子线程各种方案比较(转)
创建线程以及管理线程池基本理解 参考原文链接:http://www.oschina.net/question/12_11255?sort=time 一.创建一个简单的java线程 在 Java 语言中 ...
- Java线程池主线程等待子线程执行完成
今天讨论一个入门级的话题, 不然没东西更新对不起空间和域名~~ 工作总往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了. 一 ...
随机推荐
- Centos下磁盘管理的常用命令记录(如查找大文件)
Centos下磁盘管理的常用命令记录 查看系统磁盘空间占用,使用命令: df -h 结果: 查看磁盘inode使用情况,如果inode用完了,磁盘就没法写入新的内容了: df -i 结果: 如何查找磁 ...
- JS高级学习历程-9
昨天内容回顾 1. 作用域链(执行环境.AO.作用.变量性质顺序) 执行环境:最外部有window全局环境,每个函数内部也代表一个环境 每个执行环境内部都有AO活动对象 在函数内部访问的变量信息就是A ...
- String常用方法简介
1. 创建String对象的常用方法 (1) String s1 = "mpptest" (2) String s2 = new String(); (3) String s3 ...
- [TCP/IP]ARP与RARP的总结
一. 总述 简单的说,ARP协议就是将IP地址转换为MAC物理地址:而RARP,就是ARP的逆向,也就是将MAC物理地址转换为IP地址.看起来这两个协议是完全对称的,但发明这两个协议的初衷基本上没有什 ...
- Codeforces 1167F(计算贡献)
要点 容易想到排序,然后对于每个数: 人的惯性思维做法是:\(a[i]*(rank1的+rank2的+-)\).然而解法巧妙之处在于直接把所有的加和当成一个系数,然后先假装所有情况系数都是1,接着往上 ...
- Codeforces 140F(坐标系点对称)
要点 结论:如果坐标系一堆点两两对称于某一重心,则排序后第1个和第n个为一对,以此类推. 枚举所有可能的重心点并check.因为隐藏的点不超过k个,所以点1-k+1都可能跟第n个匹配.对右侧同样适用, ...
- Codeforces 384E-线段树+dfs序
如果这题只传到儿子不继续向下就是裸的dfs序+线段树,继续往下传的还改变正负号,我们可以根据它的层数来确定正负号 #include<bits/stdc++.h> #define inf 0 ...
- WebApi迁移ASP.NET Core2.0
WebApi迁移ASP.NET Core2.0 一步一步带你做WebApi迁移ASP.NET Core2.0 随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的AS ...
- 【OGG】OGG的单向DML复制配置(一)
[OGG]OGG的单向DML复制配置(一) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...
- Python 踩坑之旅进程篇其四一次性踩透 uid euid suid gid egid sgid的坑坑洼洼
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 技术关键字 1.5 坑后思考 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 代码示例: 菜 ...