问题描述
正如标题所述-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内核互斥锁。