本文整理汇总了C++中createCrossThreadTask函数的典型用法代码示例。如果您正苦于以下问题:C++ createCrossThreadTask函数的具体用法?C++ createCrossThreadTask怎么用?C++ createCrossThreadTask使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了createCrossThreadTask函数的17个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: TEST_F
TEST_F(CrossThreadTaskTest, CreateForFunctionWithExecutionContext)
{
OwnPtr<ExecutionContextTask> task1 = createCrossThreadTask(&functionWithExecutionContext, new GCObject);
OwnPtr<ExecutionContextTask> task2 = createCrossThreadTask(&functionWithExecutionContext, RawPtr<GCObject>(new GCObject));
Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, BlinkGC::ForcedGC);
EXPECT_EQ(2, GCObject::s_counter);
}
开发者ID:howardroark2018,项目名称:chromium,代码行数:7,代码来源:CrossThreadTaskTest.cpp
示例2: ASSERT
void UniqueIDBDatabase::performPutOrAdd(uint64_t callbackIdentifier, const IDBResourceIdentifier& transactionIdentifier, uint64_t objectStoreIdentifier, const IDBKeyData& keyData, const ThreadSafeDataBuffer& valueData, IndexedDB::ObjectStoreOverwriteMode overwriteMode)
{
ASSERT(!isMainThread());
LOG(IndexedDB, "(db) UniqueIDBDatabase::performPutOrAdd");
ASSERT(m_backingStore);
ASSERT(objectStoreIdentifier);
IDBKeyData usedKey;
IDBError error;
auto objectStoreInfo = m_databaseInfo->infoForExistingObjectStore(objectStoreIdentifier);
if (!objectStoreInfo) {
error = IDBError(IDBExceptionCode::InvalidStateError, ASCIILiteral("Object store cannot be found in the backing store"));
m_server.postDatabaseTaskReply(createCrossThreadTask(*this, &UniqueIDBDatabase::didPerformPutOrAdd, callbackIdentifier, error, usedKey));
return;
}
if (objectStoreInfo->autoIncrement() && !keyData.isValid()) {
uint64_t keyNumber;
error = m_backingStore->generateKeyNumber(transactionIdentifier, objectStoreIdentifier, keyNumber);
if (!error.isNull()) {
m_server.postDatabaseTaskReply(createCrossThreadTask(*this, &UniqueIDBDatabase::didPerformPutOrAdd, callbackIdentifier, error, usedKey));
return;
}
usedKey.setNumberValue(keyNumber);
} else
usedKey = keyData;
if (overwriteMode == IndexedDB::ObjectStoreOverwriteMode::NoOverwrite) {
bool keyExists;
error = m_backingStore->keyExistsInObjectStore(transactionIdentifier, objectStoreIdentifier, usedKey, keyExists);
if (error.isNull() && keyExists)
error = IDBError(IDBExceptionCode::ConstraintError, ASCIILiteral("Key already exists in the object store"));
if (!error.isNull()) {
m_server.postDatabaseTaskReply(createCrossThreadTask(*this, &UniqueIDBDatabase::didPerformPutOrAdd, callbackIdentifier, error, usedKey));
return;
}
}
// 3.4.1 Object Store Storage Operation
// ...If a record already exists in store ...
// then remove the record from store using the steps for deleting records from an object store...
// This is important because formally deleting it from from the object store also removes it from the appropriate indexes.
error = m_backingStore->deleteRange(transactionIdentifier, objectStoreIdentifier, usedKey);
if (!error.isNull()) {
m_server.postDatabaseTaskReply(createCrossThreadTask(*this, &UniqueIDBDatabase::didPerformPutOrAdd, callbackIdentifier, error, usedKey));
return;
}
error = m_backingStore->addRecord(transactionIdentifier, objectStoreIdentifier, usedKey, valueData);
m_server.postDatabaseTaskReply(createCrossThreadTask(*this, &UniqueIDBDatabase::didPerformPutOrAdd, callbackIdentifier, error, usedKey));
}
开发者ID:nicroto,项目名称:webkit,代码行数:56,代码来源:UniqueIDBDatabase.cpp
示例3: createCrossThreadTask
void WebSharedWorkerImpl::postMessageToPageInspector(const String& message) {
m_mainFrame->frame()->document()->postInspectorTask(
BLINK_FROM_HERE,
createCrossThreadTask(
&WebSharedWorkerImpl::postMessageToPageInspectorOnMainThread,
crossThreadUnretained(this), message));
}
开发者ID:mirror,项目名称:chromium,代码行数:7,代码来源:WebSharedWorkerImpl.cpp
示例4: disconnectFromInspector
void WorkerMessagingProxy::disconnectFromInspector()
{
m_pageInspector = 0;
if (m_askedToTerminate)
return;
m_workerThread->postDebuggerTask(createCrossThreadTask(disconnectFromWorkerGlobalScopeInspectorTask, true));
}
开发者ID:darktears,项目名称:blink-crosswalk,代码行数:7,代码来源:WorkerMessagingProxy.cpp
示例5: DCHECK
// Invoked to notify us that there are messages available for this port.
// This code may be called from another thread, and so should not call any
// non-threadsafe APIs (i.e. should not call into the entangled channel or
// access mutable variables).
void MessagePort::messageAvailable() {
DCHECK(getExecutionContext());
getExecutionContext()->postTask(
BLINK_FROM_HERE,
createCrossThreadTask(&MessagePort::dispatchMessages,
wrapCrossThreadWeakPersistent(this)));
}
开发者ID:ollie314,项目名称:chromium,代码行数:11,代码来源:MessagePort.cpp
示例6: String
void WorkerMessagingProxy::sendMessageToInspector(const String& message)
{
if (m_askedToTerminate)
return;
m_workerThread->postDebuggerTask(createCrossThreadTask(dispatchOnInspectorBackendTask, String(message)));
m_workerThread->interruptAndDispatchInspectorCommands();
}
开发者ID:darktears,项目名称:blink-crosswalk,代码行数:7,代码来源:WorkerMessagingProxy.cpp
示例7: LOG
void UniqueIDBDatabase::performActivateTransactionInBackingStore(uint64_t callbackIdentifier, const IDBTransactionInfo& info)
{
LOG(IndexedDB, "(db) UniqueIDBDatabase::performActivateTransactionInBackingStore");
IDBError error = m_backingStore->beginTransaction(info);
m_server.postDatabaseTaskReply(createCrossThreadTask(*this, &UniqueIDBDatabase::didPerformActivateTransactionInBackingStore, callbackIdentifier, error));
}
开发者ID:nicroto,项目名称:webkit,代码行数:7,代码来源:UniqueIDBDatabase.cpp
示例8: ENABLE
void Database::runTransaction(
SQLTransactionCallback* callback,
SQLTransactionErrorCallback* errorCallback,
VoidCallback* successCallback,
bool readOnly,
const ChangeVersionData* changeVersionData)
{
// FIXME: Rather than passing errorCallback to SQLTransaction and then
// sometimes firing it ourselves, this code should probably be pushed down
// into Database so that we only create the SQLTransaction if we're
// actually going to run it.
#if ENABLE(ASSERT)
SQLTransactionErrorCallback* originalErrorCallback = errorCallback;
#endif
SQLTransaction* transaction = SQLTransaction::create(this, callback, successCallback, errorCallback, readOnly);
SQLTransactionBackend* transactionBackend = runTransaction(transaction, readOnly, changeVersionData);
if (!transactionBackend) {
SQLTransactionErrorCallback* callback = transaction->releaseErrorCallback();
ASSERT(callback == originalErrorCallback);
if (callback) {
OwnPtr<SQLErrorData> error = SQLErrorData::create(SQLError::UNKNOWN_ERR, "database has been closed");
executionContext()->postTask(createCrossThreadTask(&callTransactionErrorCallback, callback, error.release()));
}
}
}
开发者ID:kjthegod,项目名称:WebKit,代码行数:25,代码来源:Database.cpp
示例9: finishWithoutOnEnded
void AudioScheduledSourceHandler::finish()
{
finishWithoutOnEnded();
if (m_hasEndedListener && context()->executionContext()) {
context()->executionContext()->postTask(FROM_HERE, createCrossThreadTask(&AudioScheduledSourceHandler::notifyEnded, PassRefPtr<AudioScheduledSourceHandler>(this)));
}
}
开发者ID:alexanderbill,项目名称:blink-crosswalk,代码行数:8,代码来源:AudioScheduledSourceNode.cpp
示例10: ASSERT
void WorkerMessagingProxy::connectToInspector(WorkerGlobalScopeProxy::PageInspector* pageInspector)
{
if (m_askedToTerminate)
return;
ASSERT(!m_pageInspector);
m_pageInspector = pageInspector;
m_workerThread->postDebuggerTask(createCrossThreadTask(connectToWorkerGlobalScopeInspectorTask, true));
}
开发者ID:darktears,项目名称:blink-crosswalk,代码行数:8,代码来源:WorkerMessagingProxy.cpp
示例11: ASSERT
void WorkerMessagingProxy::workerObjectDestroyed()
{
// workerObjectDestroyed() is called in InProcessWorkerBase's destructor.
// Thus it should be guaranteed that a weak pointer m_workerObject has been cleared
// before this method gets called.
ASSERT(!m_workerObject);
m_executionContext->postTask(FROM_HERE, createCrossThreadTask(&WorkerMessagingProxy::workerObjectDestroyedInternal, this));
}
开发者ID:Pluto-tv,项目名称:blink-crosswalk,代码行数:9,代码来源:WorkerMessagingProxy.cpp
示例12: toWorkerGlobalScope
void MemoryCache::removeURLFromCache(ExecutionContext* context, const KURL& url)
{
if (context->isWorkerGlobalScope()) {
WorkerGlobalScope* workerGlobalScope = toWorkerGlobalScope(context);
workerGlobalScope->thread()->workerLoaderProxy().postTaskToLoader(createCrossThreadTask(&removeURLFromCacheInternal, url));
return;
}
removeURLFromCacheInternal(context, url);
}
开发者ID:RobinWuDev,项目名称:Qt,代码行数:9,代码来源:MemoryCache.cpp
示例13: clearClientWrapper
void WorkerThreadableLoader::MainThreadBridge::destroy()
{
// Ensure that no more client callbacks are done in the worker context's thread.
clearClientWrapper();
// "delete this" and m_mainThreadLoader::deref() on the worker object's thread.
m_loaderProxy->postTaskToLoader(
createCrossThreadTask(&MainThreadBridge::mainThreadDestroy, this));
}
开发者ID:smishenk,项目名称:chromium-crosswalk,代码行数:9,代码来源:WorkerThreadableLoader.cpp
示例14: ASSERT
void OfflineAudioDestinationHandler::finishOfflineRendering()
{
ASSERT(!isMainThread());
// The actual rendering has been completed. Notify the context.
if (context()->executionContext()) {
context()->executionContext()->postTask(BLINK_FROM_HERE,
createCrossThreadTask(&OfflineAudioDestinationHandler::notifyComplete, this));
}
}
开发者ID:astojilj,项目名称:chromium-crosswalk,代码行数:10,代码来源:OfflineAudioDestinationNode.cpp
示例15: createCrossThreadTask
void WorkerMessagingProxy::writeTimelineStartedEvent(const String& sessionId)
{
if (m_askedToTerminate)
return;
OwnPtr<ExecutionContextTask> task = createCrossThreadTask(dispatchWriteTimelineStartedEvent, String(sessionId));
if (m_workerThread)
m_workerThread->postTask(task.release());
else
m_queuedEarlyTasks.append(task.release());
}
开发者ID:darktears,项目名称:blink-crosswalk,代码行数:10,代码来源:WorkerMessagingProxy.cpp
示例16: listDirectory
void IDBServer::performCloseAndDeleteDatabasesModifiedSince(std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID)
{
if (!m_databaseDirectoryPath.isEmpty()) {
Vector<String> originPaths = listDirectory(m_databaseDirectoryPath, "*");
for (auto& originPath : originPaths)
removeAllDatabasesForOriginPath(originPath, modifiedSince);
}
postDatabaseTaskReply(createCrossThreadTask(*this, &IDBServer::didPerformCloseAndDeleteDatabases, callbackID));
}
开发者ID:josecu,项目名称:webkit,代码行数:10,代码来源:IDBServer.cpp
示例17: finishWithoutOnEnded
void AudioScheduledSourceHandler::finish() {
finishWithoutOnEnded();
if (context()->getExecutionContext()) {
context()->getExecutionContext()->postTask(
BLINK_FROM_HERE,
createCrossThreadTask(&AudioScheduledSourceHandler::notifyEnded,
PassRefPtr<AudioScheduledSourceHandler>(this)));
}
}
开发者ID:mirror,项目名称:chromium,代码行数:10,代码来源:AudioScheduledSourceNode.cpp
注:本文中的createCrossThreadTask函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论