如何解决Boost相当于HANDLE的多少?
正如标题所述-Boost与Windows showDatePicker(
context: context,initialDate: widget.isUpdating
? _currentExpense.createdAt.toDate()
: _dateTime,//_currentExpense.createdAt == null,firstDate: DateTime(2001),lastDate: DateTime.Now())
.then((date) {
_dateTime = date;
setState(() {
dateTimeText = _getDateString(date);
});
});
等效吗?
我需要将一些Windows特定的代码移植到Linux / OS-unspecific,它使用句柄及其函数(例如CloseHandle)。
如果等效项是HANDLE
,那么为什么?Windows boost::mutex
和HANDLE
有什么区别?
我已经在boost文档中寻找它,但是我似乎找不到它。 任何帮助表示赞赏!
解决方法
没有等效项。 HANDLE
是Windows内核对象的句柄。
这也使使用CRITICAL_SECTION
来解释差异变得容易。 Windows关键部分是非内核对象。它仅适用于您当前的过程。类似于std::mutex
。在Windows上,CreateMutex
创建一个互斥对象,该互斥对象是可以在进程之间命名,保护和共享的内核对象。这就是CreateMutex
返回HANDLE
的原因。
请注意,CreateFile
也返回HANDLE
。就像互斥锁一样,文件可以在应用程序之间命名,保护和共享。
因此,您将需要在流程中找到每个HANDLE
的真实类型,并视情况进行替换。
顺便说一句,我们有std::mutex
,不需要boost::mutex
。但是boost::interprocess::interprocess_mutex
仍然有意义,因为它等效于Windows内核互斥锁。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。