Windows
文章平均质量分 66
believe_s
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
事件EVENT,WaitForSingleObject(),WaitForMultipleObjecct()和SignalObjectAndWait() 的使用(下)
注意:当WaitForMultipleObjects等待多个内核对象的时候,如果它的bWaitAll 参数设置为false。其返回值减去WAIT_OBJECT_0 就是参数lpHandles数组的序号。如果同时有多个内核对象被触发,这个函数返回的只是其中序号最小的那个。如果bWaitAll 为TRUE 则等待所有信号量有效在往下执行。(FALSE 当有其中一个信号量有效时就向下执行)问题就...原创 2018-08-23 17:39:11 · 2085 阅读 · 0 评论 -
使用线程本地存储
线程本地存储(TLS)使同一进程的多个线程能够使用由TlsAlloc函数分配的索引来存储和检索线程本地的值。在此示例中,在进程启动时分配索引。当每个线程启动时,它会分配一个动态内存块,并使用TlsSetValue函数在TLS槽中存储指向此内存的指针。CommonFunc函数使用TlsGetValue函数来访问与调用线程本地的索引相关联的数据。在每个线程终止之前,它会释放其动态内存。在进程终止之前,...原创 2018-09-11 15:21:46 · 778 阅读 · 0 评论 -
CreateRemoteThread函数
CreateRemoteThread函数创建在另一个进程的虚拟地址空间中运行的线程。使用CreateRemoteThreadEx函数创建在另一个进程的虚拟地址空间中运行的线程,并可选择指定扩展属性。语法HANDLE CreateRemoteThread( HANDLE hProcess, LPSECURITY_ATTRIBUTES lp...原创 2018-09-11 15:35:52 · 3428 阅读 · 0 评论 -
CreateThread函数
创建一个在调用进程的虚拟地址空间内执行的线程。要创建在另一个进程的虚拟地址空间中运行的线程,请使用 CreateRemoteThread函数。语法HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_...原创 2018-09-11 12:26:19 · 29295 阅读 · 0 评论 -
错误代码:0xc000007b 解决思路
三维电子沙盘项目:现场环境部署时,二维平台和模型在实际部署中遇到了0xc000007b的问题,网上很多说是DX的问题,但并不能解决。之前在编译OpenDDS时也遇到过类似的问题,是在不同版本的OpenDDS的动态库混用时遇到的,解决的办法是调整动态库。这里的问题则初步定位是动态库的问题,在对部分可能存在问题的动态库调换后,还是没有解决,后来利用红辣椒和Depends查看依赖动态库,发现是32...原创 2018-11-27 19:53:18 · 6184 阅读 · 0 评论 -
leetcode练习——数组篇(1)(std::ios::sync_with_stdio(false);std::cin.tie(nullptr);)
题号1. 两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 ...原创 2018-12-17 21:30:47 · 422 阅读 · 0 评论 -
信息学竞赛的常数优化、常见问题、代码风格相关
在查std::ios::sync_with_stdio(false);有关信息时,看到https://blog.youkuaiyun.com/qq_33583069/article/details/53086992 这篇博客,对其中一些问题比较感兴趣,整理了下相关资料:isdigit()https://blog.youkuaiyun.com/cupidove/article/details/43271579这...原创 2018-12-25 17:08:06 · 340 阅读 · 0 评论 -
chrome中Google插件导出导入
导出插件:一般电脑默认将你安装的插件存放的位置在:C:\Users(用户)\你的电脑名称\AppData\Local\Google\Chrome\User Data\Default\Extensions 这个文件夹下。这里的 AppData 是个隐藏文件夹,需要显示隐藏文件夹才行。这里存放了你所有安装过的插件。之后就是打包了,打开 chrome 浏览器,打开设置—扩展程序—点击开发者模式。然后...原创 2019-09-09 15:42:07 · 4753 阅读 · 0 评论 -
线程池
有许多应用程序创建线程,在休眠状态下花费大量时间等待事件发生。其他线程可以进入休眠状态,仅定期唤醒以轮询更改或更新状态信息。线程池使您可以通过为应用程序提供由系统管理的工作线程池来更有效地使用线程。至少有一个线程监视排队到线程池的所有等待操作的状态。等待操作完成后,来自线程池的工作线程执行相应的回调函数。本主题描述了原始线程池API。Windows Vista中引入的线程池API更简单,更可靠...原创 2018-09-11 15:14:37 · 258 阅读 · 0 评论 -
线程池API
线程池API线程池应用程序编程接口(API)使用基于对象的设计。以下每个对象都由用户模式数据结构表示:池对象是一组可用于执行工作的工作线程。每个进程可以根据需要创建具有不同特征的多个隔离池。每个进程都有一个默认池。清理组与一组回调生成对象相关联。存在等待并释放作为每个清理组成员的所有对象的函数。这使应用程序无需跟踪它创建的所有对象。将工作对象分配给池,并可选择分配给清理组。它可以被发...原创 2018-09-11 15:09:08 · 591 阅读 · 0 评论 -
线程池概述
线程池一个线程池的工作线程代表应用程序的高效执行异步回调的集合。线程池主要用于减少应用程序线程的数量并提供工作线程的管理。应用程序可以对工作项进行排队,将工作与可等待的句柄相关联,根据计时器自动排队,并与I / O绑定。线程池架构以下应用程序可以从使用线程池中受益:高度并行的应用程序,可以异步分派大量小工作项(例如分布式索引搜索或网络I / O)。一个创建和销毁大量线程的应用程...原创 2018-09-11 14:53:49 · 239 阅读 · 0 评论 -
事件EVENT,WaitForSingleObject(),WaitForMultipleObjecct()和SignalObjectAndWait() 的使用(上)
用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法。但是,用户模式的线程同步有限制,对于多个进程之间的线程同步,用户模式的线程同步方法无能为力。这时,只能考虑使用内核模式。Windows提供了许多内核对象来实现线程的同步。对于线程同步而言,这些内核对象有两个非常重要的状态:“已通知”状态,“未通知”状态(也有翻译为:受信状态,未受信状态)。Windows...原创 2018-08-23 17:26:06 · 2933 阅读 · 0 评论 -
控制台程序隐藏方法总结(四种)
学习计算机,往往先从Windows环境下学习编程,学习编程,往往从C学起,学习C,往往又从控制台程序学习,何为控制台,就是那个黑框白字的界面。对于这样一个最初认为奇陋无比而现在认为无所不能的编程平台,有时候需要将界面隐藏起来。那么如何做呢?方法1: 在头文件下加上一句预处理命令:#pragma comment( linker, "/subsystem:\"windows\...原创 2018-09-04 20:26:48 · 20017 阅读 · 3 评论 -
C++11多线程----线程管理
说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段。并行是指两个或多个独立的操作同时进行。注意这里是同时进行,区别于并发,在一个时间段内执行多个操作。在单核时代,多个线程是并发的,在一个时间段内轮流执行;在多核时代,多个线程可以实现真正的并行,在多核上真正独立的并行执行。例如现在常见的4核4线程可以并行4个线程;4核8线程则使用了超线程技术,把一个物理核模拟为2个逻辑核心...原创 2018-09-04 23:49:03 · 1262 阅读 · 0 评论 -
Qt之QProcess(一)运行cmd命令
Qt为此提供了QProcess类,QProcess可用于完毕启动外部程序,并与之交互通信。一、启动外部程序的两种方式: (1)一体式:void QProcess::start(const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite) 外部程序启动后。将...原创 2018-09-02 20:34:35 · 18735 阅读 · 2 评论 -
Socket网络编程【获取本机IP】
//12.3.2//运行环境VS2013//获取本地IP #include <stdio.h>#include <winsock2.h>#pragma comment(lib,"ws2_32.lib")void main(){// 调用WSAStarup初始化WINsock库WSADATA wsaData;::WSAStartup(MAKEW...原创 2018-09-02 20:36:03 · 3384 阅读 · 0 评论 -
C++获取本机所有ip地址,可区分类型是有线无线虚拟机还是回环
一个小程序,可以获取本地所有ip地址,包括有线,无线,虚拟机,环回接口网卡,等。如图,一台机器多个网卡: 程序执行结果: #include"stdio.h"#include"string.h"#include"Winsock2.h"#pragma comment(lib,"WS2_32.lib")void main(){ printf("***********...原创 2018-09-02 20:43:41 · 2565 阅读 · 5 评论 -
内存问题提醒!结构体+protobuf做协议体发送!序列化
内存的三种分配方式: 1. 从静态存储区分配:此时的内存在程序编译的时候已经分配好,并且在程序的整个运行期间都存在。全局变量,static变量等在此存储。 2. 在栈区分配:相关代码执行时创建,执行结束时被自动释放。局部变量在此存储。栈内存分配运算内置于处理器的指令集中,效率高,但容量有限。 3. 在堆区分配:动态分配内存。用new/malloc时开辟,delete/fre...原创 2018-09-05 08:32:45 · 1883 阅读 · 0 评论 -
使用线程池功能
此示例创建自定义线程池,创建工作项和线程池计时器,并将它们与清理组关联。该池由一个持久性线程组成。它演示了以下线程池函数的使用:CloseThreadpool CloseThreadpoolCleanupGroupCloseThreadpoolCleanupGroupMembersCloseThreadpoolWaitCreateThreadpoolCreateThreadpool...原创 2018-09-11 14:41:11 · 273 阅读 · 0 评论 -
使用重定向的输入和输出创建子进程
本主题中的示例演示如何使用控制台进程中的CreateProcess函数创建子进程。它还演示了一种使用匿名管道重定向子进程的标准输入和输出句柄的技术。请注意,命名管道也可用于重定向进程I / O.所述CreatePipe函数使用SECURITY_ATTRIBUTES结构来创建可继承句柄读写两个管道的端部。一个管道的读取端用作子进程的标准输入,另一个管道的写入端是子进程的标准输出。这些管道句柄在S...原创 2018-09-11 14:43:43 · 1135 阅读 · 0 评论
分享