{"id":25318,"date":"2012-09-20T00:00:00","date_gmt":"2024-09-13T08:48:35","guid":{"rendered":"https:\/\/wordpress-583806-4798031.cloudwaysapps.com\/informator-i-kina-dag-4\/"},"modified":"2024-11-15T16:23:07","modified_gmt":"2024-11-15T15:23:07","slug":"informator-i-kina-dag-4","status":"publish","type":"post","link":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/","title":{"rendered":"Informator i Kina, Dag 4"},"content":{"rendered":"<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">N\u00e4r jag anl\u00e4nde med morgonbussen, denna fj\u00e4rde dag avseende kursen Advanced C++ and Threads Programming i Nanjing, s\u00e5 s\u00e5g vi alla direkt att n\u00e5got var annorlunda och det i positiv mening. Luften var fylld av festliga stora kinesiska ballonger. Idag firade man 20-\u00e5rs jubileum av fabriken i Nanjing. Samtidigt var det premi\u00e4r f\u00f6r en helt ny kontorsbyggnad alldeles bredvid.<\/p>\n<div style=\"clear: both; text-align: center;\"><a href=\"http:\/\/1.bp.blogspot.com\/-5tClq0o7Jlk\/UFvQHC3PncI\/AAAAAAAAAQc\/XrsuJJnV07g\/s1600\/IMAG0074.jpg\" style=\"margin-left: 1em; margin-right: 1em;\"><img fetchpriority=\"high\" decoding=\"async\" border=\"0\" height=\"180\" src=\"http:\/\/1.bp.blogspot.com\/-5tClq0o7Jlk\/UFvQHC3PncI\/AAAAAAAAAQc\/XrsuJJnV07g\/s320\/IMAG0074.jpg\" width=\"320\" \/><\/a><\/div>\n<div style=\"clear: both; text-align: center;\"><a href=\"http:\/\/4.bp.blogspot.com\/-KyCogZgm-gY\/UFvQg3w48mI\/AAAAAAAAAQk\/-4X9giDc6X8\/s1600\/IMAG0086.jpg\" style=\"margin-left: 1em; margin-right: 1em;\"><img decoding=\"async\" border=\"0\" height=\"180\" src=\"http:\/\/4.bp.blogspot.com\/-KyCogZgm-gY\/UFvQg3w48mI\/AAAAAAAAAQk\/-4X9giDc6X8\/s320\/IMAG0086.jpg\" width=\"320\" \/><\/a><\/div>\n<p>Vi hade det festligt \u00e4ven i kurslokalen, f\u00f6r idag var det dags f\u00f6r tr\u00e5dprogrammering (eng. concurrent programming). Jag b\u00f6rjande med att g\u00f6ra en distinktion mellan concurrent respektive parallel. Det finns flera olika sk\u00e4l till att man vill programmera med tr\u00e5dar.<\/p>\n<p>Ett s\u00e5dant \u00e4r att man vill det ska s\u00e5 fort som m\u00f6jligt, s.k. Performance Concurrency. Genom att exekvera p\u00e5 flera processorer (processing units = PU) samtidigt uppn\u00e5r man dettta. Ett helt annat sk\u00e4l \u00e4r att man har ett applikationsproblem som best\u00e5r av flera olika samtidiga aktiviteter. Genom dela upp problemet i mindre del-problem och l\u00f6sa dem var f\u00f6r sig, s\u00e5 l\u00f6ser man uppgiften b\u00e5de enklare och snabbare. Vi har d\u00e5 s.k. Design Concurrency.<\/p>\n<p>Sedan gick jag igenom hur POSIX Threads C API:et ser ut. F\u00f6ljt av att visa hur man elegant kan kapsla in alla st\u00f6kiga C funktioner i snygga C++ klasser i st\u00e4llet. Jag gick ocks\u00e5 igenom hur det ser ut i nya C++11 och hur man kan skapa en tr\u00e5dar m.h.a. lambdas (closures), funktionsanrops-operator, metod-pekare och vanliga funktioner. Jag visade ocks\u00e5 det st\u00f6det i C++11 f\u00f6r implicita tr\u00e5dar m.h.a. uppgifts-objekt (eng. task).<\/p>\n<p>H\u00e4r nedan ser du ett kodfragment f\u00f6r hur man kan anv\u00e4nda en closure f\u00f6r att skapa en tr\u00e5d:<\/p>\n<pre>int main(int numArgs, char* args[]) {<br \/>&nbsp; &nbsp; int T = numArgs &gt; 1 ? stoi(args[1]) : 5;<br \/>&nbsp; &nbsp; int M = numArgs &gt; 2 ? stoi(args[2]) : 100;<br \/>&nbsp; &nbsp; vector&lt;thread&gt; &nbsp;threads; &nbsp; <br \/>&nbsp; &nbsp; auto run = [](int id, int n){string msg = to_string(id) + \"n\";<br \/>&nbsp; &nbsp; &nbsp; &nbsp; for (int k=0; k&lt;n; ++k) cout &lt;&lt; msg &lt;&lt; flush;<br \/>&nbsp; &nbsp; };<br \/>&nbsp; &nbsp; for (int k=0; k&lt;T; ++k) threads.push_back( thread(run, k+1, M) );<br \/>&nbsp; &nbsp; for (auto&amp; t : threads) t.join();<br \/>}<br \/><\/pre>\n<p>Sj\u00e4lva closuren \u00e4r uttrycket run ovan, som skickas till konstruktorn f\u00f6r klassen thread. Sedan f\u00f6ljer argumenten till denna.<\/p>\n<p>H\u00e4r nedan ser du ett kodfragment f\u00f6r hur man kan skapa en asynkron uppgift:<\/p>\n<pre>tuple&lt;long,int&gt; parallel(int n1, int n2, int n3) {<br \/>&nbsp; &nbsp; auto start &nbsp;= system_clock::now();<br \/>&nbsp; &nbsp; auto r1 &nbsp; &nbsp; = async(launch::async, fibonacci, n1);<br \/>&nbsp; &nbsp; auto r2 &nbsp; &nbsp; = async(launch::async, fibonacci, n2);<br \/>&nbsp; &nbsp; auto r3 &nbsp; &nbsp; = async(launch::async, fibonacci, n3);<br \/>&nbsp; &nbsp; long result = r1.get() + r2.get() + r3.get();<br \/>&nbsp; &nbsp; auto end &nbsp; &nbsp;= system_clock::now();<br \/>&nbsp; &nbsp; int elapsed = duration_cast&lt;milliseconds&gt;(end - start).count();<br \/>&nbsp; &nbsp; return make_tuple(result, elapsed);<br \/>}<br \/><\/pre>\n<p>Det intressanta h\u00e4r ovan \u00e4r att funktionen async() returnerar ett s.k. future-objekt, som med tiden kommer att inneh\u00e5lla resultatet (i detta fall ber\u00e4kning av ett Fibonacci nummer). P\u00e5 den rad som inleds med &#8220;long result&#8221; s\u00e5 adderar vi ihop de asynkront ber\u00e4knade resultaten. Eftersom delresultaten ber\u00e4knas parallellt (jag har \u00e5tta PU p\u00e5 min laptop med Intel Core i7), s\u00e5 \u00e4r totaltiden mycket kortare j\u00e4mf\u00f6rt med att ber\u00e4kna dem efter varandra.<\/p>\n<div style=\"clear: both; text-align: center;\"><a href=\"http:\/\/1.bp.blogspot.com\/-e092QXxqTA4\/UFvQ19NYFNI\/AAAAAAAAAQs\/R8WzYz7JLIE\/s1600\/IMAG0076.jpg\" style=\"margin-left: 1em; margin-right: 1em;\"><img decoding=\"async\" border=\"0\" height=\"180\" src=\"http:\/\/1.bp.blogspot.com\/-e092QXxqTA4\/UFvQ19NYFNI\/AAAAAAAAAQs\/R8WzYz7JLIE\/s320\/IMAG0076.jpg\" width=\"320\" \/><\/a><\/div>\n<p>Sen var det dags att studera de tv\u00e5 huvudproblemen inom omr\u00e5det concurrent programming; critical sections och race conditions. Det illustrerade jag med tv\u00e5 modellproblem, beskrev problemets karakt\u00e4r och hur man l\u00f6ser det med standardmetoder iform av mutex-l\u00e5s och condition-variabler. Jag gick ocks\u00e5 igenom hur elegant detta hanteras i C++11.<\/p>\n<p>Kika p\u00e5 detta kodfragment nedan, som visar en brevl\u00e5da med en receive() metod:<\/p>\n<pre>template&lt;typename T&gt;<br \/>class Mailbox {<br \/>&nbsp; &nbsp; queue&lt;T&gt; &nbsp;q;<br \/>&nbsp; &nbsp; mutex &nbsp; &nbsp; m;<br \/>&nbsp; &nbsp; condition_varible &nbsp;c;<br \/>&nbsp; public:<br \/>&nbsp; &nbsp; T &nbsp;receive() {<br \/><span style=\"white-space: pre;\">  <\/span>unique_lock&lt;mutex&gt; &nbsp;guard(m);<br \/><span style=\"white-space: pre;\">  <\/span>c.wait(guard, []{return !q.empty()});<br \/><span style=\"white-space: pre;\">  <\/span>T &nbsp;msg = q.front(); q.pop();<br \/><span style=\"white-space: pre;\">  <\/span>c.notify_all();<br \/><span style=\"white-space: pre;\">  <\/span>return msg;<br \/><span style=\"white-space: pre;\"> <\/span>}<br \/>. . .<br \/>};<br \/><\/pre>\n<p>F\u00f6rst s\u00e5 l\u00e5ser vi det kritiska kodavsnittet, sen kollar vi att brevl\u00e5dan inneh\u00e5ller n\u00e5got. Om den \u00e4r tom, v\u00e4ntar vi m.h.a. av condition-variablen c. Det eleganta h\u00e4r att anv\u00e4nda ett lambda-utryck f\u00f6r att ange ett v\u00e4nte-villkor. H\u00e4r ovan betyder det att v\u00e4nta tills brevl\u00e5dan \u00e4r icke-tom. Vi beh\u00f6ver inte l\u00e5sa upp explicit, f\u00f6r det sk\u00f6ter destruktorn f\u00f6r klassen unique_lock, vilken anropas vid funktionsreturn.<\/p>\n<p>V\u00e4l tillbaka i centrala Nanjing vid 18-tiden och aftonskymningen och under avnjutnadet av en (ja, just det) Frappucino, s\u00e5 b\u00f6rjade det tuta o ha sig alldeles f\u00f6rskr\u00e4ckligt i trafiken. Det visade sig att en reklamskylt fattat eld och att ett helt g\u00e4ng med brandk\u00e5rsbilar \u00e5kt dit f\u00f6r att sl\u00e4cka branden och ocks\u00e5 begr\u00e4nsa elden s\u00e5 att den inte spred sig till det varuhus, som skylten var upph\u00e4ngd p\u00e5.<\/p>\n<p>Tjing tjong fr\u00e5n Nanjing \/jens<\/span><\/span><\/p>\n<h4><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">\u00a0<\/span><\/span><\/h4>\n<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\"><\/span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>N\u00e4r jag anl\u00e4nde med morgonbussen, denna fj\u00e4rde dag avseende kursen Advanced C++ and Threads Programming i Nanjing, s\u00e5 s\u00e5g vi alla direkt att n\u00e5got var annorlunda och det i positiv mening. Luften var fylld av festliga stora kinesiska ballonger. Idag firade man 20-\u00e5rs jubileum av fabriken i Nanjing. Samtidigt var det premi\u00e4r f\u00f6r en helt [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[570,922,1],"tags":[],"class_list":["post-25318","post","type-post","status-publish","format-standard","hentry","category-blogg","category-blogi","category-okategoriserad"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"N\u00e4r jag anl\u00e4nde med morgonbussen, denna fj\u00e4rde dag avseende kursen Advanced C++ and Threads Programming i Nanjing, s\u00e5 s\u00e5g vi alla direkt att n\u00e5got var annorlunda och det i positiv mening. Luften var fylld av festliga stora kinesiska ballonger. Idag firade man 20-\u00e5rs jubileum av fabriken i Nanjing. Samtidigt var det premi\u00e4r f\u00f6r en helt\" \/>\n\t<meta name=\"robots\" content=\"noindex, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Ola\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Informator\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Informator i Kina, Dag 4 - Informator\" \/>\n\t\t<meta property=\"og:description\" content=\"N\u00e4r jag anl\u00e4nde med morgonbussen, denna fj\u00e4rde dag avseende kursen Advanced C++ and Threads Programming i Nanjing, s\u00e5 s\u00e5g vi alla direkt att n\u00e5got var annorlunda och det i positiv mening. Luften var fylld av festliga stora kinesiska ballonger. Idag firade man 20-\u00e5rs jubileum av fabriken i Nanjing. Samtidigt var det premi\u00e4r f\u00f6r en helt\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/informator.se\/wp-content\/uploads\/2026\/08\/Informator_Logo_OG.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/informator.se\/wp-content\/uploads\/2026\/08\/Informator_Logo_OG.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1717\" \/>\n\t\t<meta property=\"og:image:height\" content=\"916\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2024-09-13T08:48:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-11-15T15:23:07+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/people\/Informator-Utbildning\/61569394055772\/\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Informator i Kina, Dag 4 - Informator\" \/>\n\t\t<meta name=\"twitter:description\" content=\"N\u00e4r jag anl\u00e4nde med morgonbussen, denna fj\u00e4rde dag avseende kursen Advanced C++ and Threads Programming i Nanjing, s\u00e5 s\u00e5g vi alla direkt att n\u00e5got var annorlunda och det i positiv mening. Luften var fylld av festliga stora kinesiska ballonger. Idag firade man 20-\u00e5rs jubileum av fabriken i Nanjing. Samtidigt var det premi\u00e4r f\u00f6r en helt\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/informator.se\/wp-content\/uploads\/2024\/08\/informator_logo_white_footer-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#blogposting\",\"name\":\"Informator i Kina, Dag 4 - Informator\",\"headline\":\"Informator i Kina, Dag 4\",\"author\":{\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/author\\\/ola\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/1.bp.blogspot.com\\\/-5tClq0o7Jlk\\\/UFvQHC3PncI\\\/AAAAAAAAAQc\\\/XrsuJJnV07g\\\/s320\\\/IMAG0074.jpg\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#articleImage\"},\"datePublished\":\"2012-09-20T00:00:00+02:00\",\"dateModified\":\"2024-11-15T16:23:07+01:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#webpage\"},\"articleSection\":\"Blogg, blogi, Okategoriserad\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/informator.se\\\/en\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/informator.se\\\/category\\\/okategoriserad\\\/#listItem\",\"name\":\"Okategoriserad\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/informator.se\\\/category\\\/okategoriserad\\\/#listItem\",\"position\":2,\"name\":\"Okategoriserad\",\"item\":\"https:\\\/\\\/informator.se\\\/category\\\/okategoriserad\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#listItem\",\"name\":\"Informator i Kina, Dag 4\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#listItem\",\"position\":3,\"name\":\"Informator i Kina, Dag 4\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/informator.se\\\/category\\\/okategoriserad\\\/#listItem\",\"name\":\"Okategoriserad\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/#organization\",\"name\":\"Informator Utbildning Svenska AB\",\"description\":\"Informator \\u00e4r ett svenskt utbildningsbolag som erbjuder utbildningar inom IT, Tech och ledarskap f\\u00f6r f\\u00f6retag och organisationer.\",\"url\":\"https:\\\/\\\/informator.se\\\/en\\\/\",\"telephone\":\"+46858711610\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/informator.se\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Informator_logo_cmyk-png-FOR-WEBB.png\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#organizationLogo\",\"width\":355,\"height\":218},\"image\":{\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/people\\\/Informator-Utbildning\\\/61569394055772\\\/\",\"https:\\\/\\\/www.instagram.com\\\/informator_utbildning\\\/\",\"https:\\\/\\\/se.linkedin.com\\\/school\\\/informatorutbildning\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/author\\\/ola\\\/#author\",\"url\":\"https:\\\/\\\/informator.se\\\/en\\\/author\\\/ola\\\/\",\"name\":\"Ola\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8dc8b4e0b2ce4c9877b24492eb6bd485776c74f000707741481e2adcb5f7b25f?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Ola\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#webpage\",\"url\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/\",\"name\":\"Informator i Kina, Dag 4 - Informator\",\"description\":\"N\\u00e4r jag anl\\u00e4nde med morgonbussen, denna fj\\u00e4rde dag avseende kursen Advanced C++ and Threads Programming i Nanjing, s\\u00e5 s\\u00e5g vi alla direkt att n\\u00e5got var annorlunda och det i positiv mening. Luften var fylld av festliga stora kinesiska ballonger. Idag firade man 20-\\u00e5rs jubileum av fabriken i Nanjing. Samtidigt var det premi\\u00e4r f\\u00f6r en helt\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/informator-i-kina-dag-4\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/author\\\/ola\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/author\\\/ola\\\/#author\"},\"datePublished\":\"2012-09-20T00:00:00+02:00\",\"dateModified\":\"2024-11-15T16:23:07+01:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/informator.se\\\/en\\\/\",\"name\":\"Informator\",\"description\":\"Sveriges ledande utbildningar inom IT, tech och ledarskap\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/informator.se\\\/en\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Informator i Kina, Dag 4 - Informator","description":"N\u00e4r jag anl\u00e4nde med morgonbussen, denna fj\u00e4rde dag avseende kursen Advanced C++ and Threads Programming i Nanjing, s\u00e5 s\u00e5g vi alla direkt att n\u00e5got var annorlunda och det i positiv mening. Luften var fylld av festliga stora kinesiska ballonger. Idag firade man 20-\u00e5rs jubileum av fabriken i Nanjing. Samtidigt var det premi\u00e4r f\u00f6r en helt","canonical_url":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/","robots":"noindex, max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#blogposting","name":"Informator i Kina, Dag 4 - Informator","headline":"Informator i Kina, Dag 4","author":{"@id":"https:\/\/informator.se\/en\/author\/ola\/#author"},"publisher":{"@id":"https:\/\/informator.se\/en\/#organization"},"image":{"@type":"ImageObject","url":"http:\/\/1.bp.blogspot.com\/-5tClq0o7Jlk\/UFvQHC3PncI\/AAAAAAAAAQc\/XrsuJJnV07g\/s320\/IMAG0074.jpg","@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#articleImage"},"datePublished":"2012-09-20T00:00:00+02:00","dateModified":"2024-11-15T16:23:07+01:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#webpage"},"isPartOf":{"@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#webpage"},"articleSection":"Blogg, blogi, Okategoriserad"},{"@type":"BreadcrumbList","@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/informator.se\/en\/#listItem","position":1,"name":"Home","item":"https:\/\/informator.se\/en\/","nextItem":{"@type":"ListItem","@id":"https:\/\/informator.se\/category\/okategoriserad\/#listItem","name":"Okategoriserad"}},{"@type":"ListItem","@id":"https:\/\/informator.se\/category\/okategoriserad\/#listItem","position":2,"name":"Okategoriserad","item":"https:\/\/informator.se\/category\/okategoriserad\/","nextItem":{"@type":"ListItem","@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#listItem","name":"Informator i Kina, Dag 4"},"previousItem":{"@type":"ListItem","@id":"https:\/\/informator.se\/en\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#listItem","position":3,"name":"Informator i Kina, Dag 4","previousItem":{"@type":"ListItem","@id":"https:\/\/informator.se\/category\/okategoriserad\/#listItem","name":"Okategoriserad"}}]},{"@type":"Organization","@id":"https:\/\/informator.se\/en\/#organization","name":"Informator Utbildning Svenska AB","description":"Informator \u00e4r ett svenskt utbildningsbolag som erbjuder utbildningar inom IT, Tech och ledarskap f\u00f6r f\u00f6retag och organisationer.","url":"https:\/\/informator.se\/en\/","telephone":"+46858711610","logo":{"@type":"ImageObject","url":"https:\/\/informator.se\/wp-content\/uploads\/2026\/01\/Informator_logo_cmyk-png-FOR-WEBB.png","@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#organizationLogo","width":355,"height":218},"image":{"@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#organizationLogo"},"sameAs":["https:\/\/www.facebook.com\/people\/Informator-Utbildning\/61569394055772\/","https:\/\/www.instagram.com\/informator_utbildning\/","https:\/\/se.linkedin.com\/school\/informatorutbildning\/"]},{"@type":"Person","@id":"https:\/\/informator.se\/en\/author\/ola\/#author","url":"https:\/\/informator.se\/en\/author\/ola\/","name":"Ola","image":{"@type":"ImageObject","@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/8dc8b4e0b2ce4c9877b24492eb6bd485776c74f000707741481e2adcb5f7b25f?s=96&d=mm&r=g","width":96,"height":96,"caption":"Ola"}},{"@type":"WebPage","@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#webpage","url":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/","name":"Informator i Kina, Dag 4 - Informator","description":"N\u00e4r jag anl\u00e4nde med morgonbussen, denna fj\u00e4rde dag avseende kursen Advanced C++ and Threads Programming i Nanjing, s\u00e5 s\u00e5g vi alla direkt att n\u00e5got var annorlunda och det i positiv mening. Luften var fylld av festliga stora kinesiska ballonger. Idag firade man 20-\u00e5rs jubileum av fabriken i Nanjing. Samtidigt var det premi\u00e4r f\u00f6r en helt","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/informator.se\/en\/#website"},"breadcrumb":{"@id":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/#breadcrumblist"},"author":{"@id":"https:\/\/informator.se\/en\/author\/ola\/#author"},"creator":{"@id":"https:\/\/informator.se\/en\/author\/ola\/#author"},"datePublished":"2012-09-20T00:00:00+02:00","dateModified":"2024-11-15T16:23:07+01:00"},{"@type":"WebSite","@id":"https:\/\/informator.se\/en\/#website","url":"https:\/\/informator.se\/en\/","name":"Informator","description":"Sveriges ledande utbildningar inom IT, tech och ledarskap","inLanguage":"en-US","publisher":{"@id":"https:\/\/informator.se\/en\/#organization"}}]},"og:locale":"en_US","og:site_name":"Informator","og:type":"article","og:title":"Informator i Kina, Dag 4 - Informator","og:description":"N\u00e4r jag anl\u00e4nde med morgonbussen, denna fj\u00e4rde dag avseende kursen Advanced C++ and Threads Programming i Nanjing, s\u00e5 s\u00e5g vi alla direkt att n\u00e5got var annorlunda och det i positiv mening. Luften var fylld av festliga stora kinesiska ballonger. Idag firade man 20-\u00e5rs jubileum av fabriken i Nanjing. Samtidigt var det premi\u00e4r f\u00f6r en helt","og:url":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/","og:image":"https:\/\/informator.se\/wp-content\/uploads\/2026\/08\/Informator_Logo_OG.png","og:image:secure_url":"https:\/\/informator.se\/wp-content\/uploads\/2026\/08\/Informator_Logo_OG.png","og:image:width":1717,"og:image:height":916,"article:published_time":"2024-09-13T08:48:35+00:00","article:modified_time":"2024-11-15T15:23:07+00:00","article:publisher":"https:\/\/www.facebook.com\/people\/Informator-Utbildning\/61569394055772\/","twitter:card":"summary_large_image","twitter:title":"Informator i Kina, Dag 4 - Informator","twitter:description":"N\u00e4r jag anl\u00e4nde med morgonbussen, denna fj\u00e4rde dag avseende kursen Advanced C++ and Threads Programming i Nanjing, s\u00e5 s\u00e5g vi alla direkt att n\u00e5got var annorlunda och det i positiv mening. Luften var fylld av festliga stora kinesiska ballonger. Idag firade man 20-\u00e5rs jubileum av fabriken i Nanjing. Samtidigt var det premi\u00e4r f\u00f6r en helt","twitter:image":"https:\/\/informator.se\/wp-content\/uploads\/2024\/08\/informator_logo_white_footer-1.png"},"aioseo_meta_data":{"post_id":"25318","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2024-10-15 15:00:03","updated":"2025-06-13 23:33:08","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/informator.se\/en\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/informator.se\/category\/okategoriserad\/\" title=\"Okategoriserad\">Okategoriserad<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tInformator i Kina, Dag 4\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/informator.se\/en\/"},{"label":"Okategoriserad","link":"https:\/\/informator.se\/category\/okategoriserad\/"},{"label":"Informator i Kina, Dag 4","link":"https:\/\/informator.se\/en\/informator-i-kina-dag-4\/"}],"_links":{"self":[{"href":"https:\/\/informator.se\/en\/wp-json\/wp\/v2\/posts\/25318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/informator.se\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/informator.se\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/informator.se\/en\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/informator.se\/en\/wp-json\/wp\/v2\/comments?post=25318"}],"version-history":[{"count":1,"href":"https:\/\/informator.se\/en\/wp-json\/wp\/v2\/posts\/25318\/revisions"}],"predecessor-version":[{"id":26038,"href":"https:\/\/informator.se\/en\/wp-json\/wp\/v2\/posts\/25318\/revisions\/26038"}],"wp:attachment":[{"href":"https:\/\/informator.se\/en\/wp-json\/wp\/v2\/media?parent=25318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/informator.se\/en\/wp-json\/wp\/v2\/categories?post=25318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/informator.se\/en\/wp-json\/wp\/v2\/tags?post=25318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}