{"id":26881,"date":"2024-03-16T07:31:25","date_gmt":"2024-03-16T07:31:25","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/"},"modified":"2024-03-22T09:40:13","modified_gmt":"2024-03-22T09:40:13","slug":"create-multiple-threads-in-vc-and-their-application","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/","title":{"rendered":"Create multiple threads in VC++ and their application"},"content":{"rendered":"<p>Creating multiple threads in VC++ can be achieved using functions provided by the Windows API. Here is a simple example code:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-meta\">#<span class=\"hljs-keyword\">include<\/span> <span class=\"hljs-string\">&lt;windows.h&gt;<\/span><\/span>\r\n<span class=\"hljs-meta\">#<span class=\"hljs-keyword\">include<\/span> <span class=\"hljs-string\">&lt;iostream&gt;<\/span><\/span>\r\n\r\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">namespace<\/span> std;\r\n\r\n<span class=\"hljs-comment\">\/\/ \u7ebf\u7a0b\u51fd\u6570<\/span>\r\n<span class=\"hljs-function\">DWORD WINAPI <span class=\"hljs-title\">ThreadFunction<\/span><span class=\"hljs-params\">(LPVOID lpParam)<\/span> <\/span>{\r\n    <span class=\"hljs-comment\">\/\/ \u83b7\u53d6\u4f20\u5165\u53c2\u6570<\/span>\r\n    <span class=\"hljs-type\">int<\/span> threadId = *(<span class=\"hljs-type\">int<\/span>*)lpParam;\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u8f93\u51fa\u7ebf\u7a0bID<\/span>\r\n    cout &lt;&lt; <span class=\"hljs-string\">\"Thread \"<\/span> &lt;&lt; threadId &lt;&lt; <span class=\"hljs-string\">\" is running.\"<\/span> &lt;&lt; endl;\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u5ef6\u65f6\u4e00\u6bb5\u65f6\u95f4<\/span>\r\n    <span class=\"hljs-built_in\">Sleep<\/span>(<span class=\"hljs-number\">1000<\/span>);\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u8f93\u51fa\u7ebf\u7a0bID\u5e76\u9000\u51fa<\/span>\r\n    cout &lt;&lt; <span class=\"hljs-string\">\"Thread \"<\/span> &lt;&lt; threadId &lt;&lt; <span class=\"hljs-string\">\" is exiting.\"<\/span> &lt;&lt; endl;\r\n\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\r\n}\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-type\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n    <span class=\"hljs-comment\">\/\/ \u521b\u5efa\u7ebf\u7a0b\u6570\u7ec4<\/span>\r\n    HANDLE threads[<span class=\"hljs-number\">5<\/span>];\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u542f\u52a8\u4e94\u4e2a\u7ebf\u7a0b<\/span>\r\n    <span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-type\">int<\/span> i = <span class=\"hljs-number\">0<\/span>; i &lt; <span class=\"hljs-number\">5<\/span>; i++) {\r\n        <span class=\"hljs-comment\">\/\/ \u4f20\u5165\u53c2\u6570<\/span>\r\n        <span class=\"hljs-type\">int<\/span>* threadId = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-built_in\">int<\/span>(i);\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u521b\u5efa\u7ebf\u7a0b<\/span>\r\n        threads[i] = <span class=\"hljs-built_in\">CreateThread<\/span>(<span class=\"hljs-literal\">NULL<\/span>, <span class=\"hljs-number\">0<\/span>, ThreadFunction, threadId, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-literal\">NULL<\/span>);\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u7b49\u5f85\u6240\u6709\u7ebf\u7a0b\u7ed3\u675f<\/span>\r\n    <span class=\"hljs-built_in\">WaitForMultipleObjects<\/span>(<span class=\"hljs-number\">5<\/span>, threads, TRUE, INFINITE);\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u5173\u95ed\u7ebf\u7a0b\u53e5\u67c4<\/span>\r\n    <span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-type\">int<\/span> i = <span class=\"hljs-number\">0<\/span>; i &lt; <span class=\"hljs-number\">5<\/span>; i++) {\r\n        <span class=\"hljs-built_in\">CloseHandle<\/span>(threads[i]);\r\n    }\r\n\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\r\n}\r\n<\/code><\/pre>\n<p>The above code creates five threads, each outputting their thread ID and then exiting after a delay of 1 second. In the main function, threads are created using the CreateThread function and passing the thread function and parameters. Then, the WaitForMultipleObjects function is used to wait for all threads to finish, and the CloseHandle function is used to close the thread handles.<\/p>\n<p>Moreover, multithreading can be used in practical applications to enhance the concurrency and responsiveness of programs. For example, it can be employed to accelerate compute-intensive tasks and achieve parallel processing. It is important to note that synchronization and mutual exclusion between threads must be carefully managed in multithreaded programming to prevent issues such as race conditions and deadlocks.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Creating multiple threads in VC++ can be achieved using functions provided by the Windows API. Here is a simple example code: #include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; \/\/ \u7ebf\u7a0b\u51fd\u6570 DWORD WINAPI ThreadFunction(LPVOID lpParam) { \/\/ \u83b7\u53d6\u4f20\u5165\u53c2\u6570 int threadId = *(int*)lpParam; \/\/ \u8f93\u51fa\u7ebf\u7a0bID cout &lt;&lt; &#8220;Thread &#8221; &lt;&lt; threadId &lt;&lt; &#8221; is running.&#8221; &lt;&lt; endl; [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-26881","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Create multiple threads in VC++ and their application - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create multiple threads in VC++ and their application\" \/>\n<meta property=\"og:description\" content=\"Creating multiple threads in VC++ can be achieved using functions provided by the Windows API. Here is a simple example code: #include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; \/\/ \u7ebf\u7a0b\u51fd\u6570 DWORD WINAPI ThreadFunction(LPVOID lpParam) { \/\/ \u83b7\u53d6\u4f20\u5165\u53c2\u6570 int threadId = *(int*)lpParam; \/\/ \u8f93\u51fa\u7ebf\u7a0bID cout &lt;&lt; &quot;Thread &quot; &lt;&lt; threadId &lt;&lt; &quot; is running.&quot; &lt;&lt; endl; [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-16T07:31:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T09:40:13+00:00\" \/>\n<meta name=\"author\" content=\"William Carter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"William Carter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/\"},\"author\":{\"name\":\"William Carter\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0\"},\"headline\":\"Create multiple threads in VC++ and their application\",\"datePublished\":\"2024-03-16T07:31:25+00:00\",\"dateModified\":\"2024-03-22T09:40:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/\"},\"wordCount\":148,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/\",\"name\":\"Create multiple threads in VC++ and their application - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T07:31:25+00:00\",\"dateModified\":\"2024-03-22T09:40:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create multiple threads in VC++ and their application\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0\",\"name\":\"William Carter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"caption\":\"William Carter\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Create multiple threads in VC++ and their application - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/","og_locale":"en_US","og_type":"article","og_title":"Create multiple threads in VC++ and their application","og_description":"Creating multiple threads in VC++ can be achieved using functions provided by the Windows API. Here is a simple example code: #include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; \/\/ \u7ebf\u7a0b\u51fd\u6570 DWORD WINAPI ThreadFunction(LPVOID lpParam) { \/\/ \u83b7\u53d6\u4f20\u5165\u53c2\u6570 int threadId = *(int*)lpParam; \/\/ \u8f93\u51fa\u7ebf\u7a0bID cout &lt;&lt; \"Thread \" &lt;&lt; threadId &lt;&lt; \" is running.\" &lt;&lt; endl; [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T07:31:25+00:00","article_modified_time":"2024-03-22T09:40:13+00:00","author":"William Carter","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"William Carter","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/"},"author":{"name":"William Carter","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0"},"headline":"Create multiple threads in VC++ and their application","datePublished":"2024-03-16T07:31:25+00:00","dateModified":"2024-03-22T09:40:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/"},"wordCount":148,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/","url":"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/","name":"Create multiple threads in VC++ and their application - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T07:31:25+00:00","dateModified":"2024-03-22T09:40:13+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/create-multiple-threads-in-vc-and-their-application\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Create multiple threads in VC++ and their application"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0","name":"William Carter","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","caption":"William Carter"},"url":"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/26881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=26881"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/26881\/revisions"}],"predecessor-version":[{"id":61075,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/26881\/revisions\/61075"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=26881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=26881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=26881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}